Portal Java Tutorial: Pacote Swingpor Daniel Badawi Pacote Swing -O pacote Swingé uma extensão das classes da AWT (Abstract Window Toolkit) utilizada para a criação de aplicações gráficas. -Todos os programas que executaremos necessitarão de 3 linhas de importação de classes: import java.awt.*; Permite a importação de várias classes do pacote awt. import java.awt.eve nt.*; Utilizado para o processamento dos eventos como o clickdo mouse em um botão, enternuma caixa de texto etc. import javax.swing.*; Usado para as diversas classes do pacote swing. Criação de Frames - janelas O programa a seguir apresenta uma janela (frame). São ressaltados as seguintes propriedades rótulo da barra de título, tamanho do frame, localização e cor do fundo. import java.awt.*; import java.awt.event.*; import javax.swing.*; class Exemplo0901 extends JFrame{ Exemplo0901() //construtor - mesmo nome da classe{ setTitle("Minha primeira Janela"); //título da janelasetSize(400,50); //dimensões da janela -largura e comp. //Esquecer de chamar o método setSize() faz com que //somente a barra de título seja apresentada setLocation(150,150); //canto esquerdo e topo da telasetResizable(false); //não pode ser redimensionadagetContentPane().setBackground(Color.gray); //cor fundo} public static void main(String args[]) { JFrame Janela = new Exemplo0901(); Janela.show(); //rotina para fechar a janela: WindowListener J = new WindowAdapter() { Portal Java –A maior comunidade de Java do Brasil –www.portaljava.comTodos os direitos reservados. Proibida a utiliza ção ou replicação deste material sem prévio aviso.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
- O pacote Swing é uma extensão das classes da AWT (Abstract Window Toolkit) utilizada para acriação de aplicações gráficas.
- Todos os programas que executaremos necessitarão de 3 linhas de importação de classes:
import java.awt.*;Permite a importação de várias classes do pacote awt .
import java.awt .event.*;Utilizado para o processamento dos eventos como o click do mouse em um botão, enter numa caixa detexto etc.
import j avax.swing.*;
Usado para as diversas classes do pacote swing .
Criação de Frames - janelas
O programa a seguir apresenta uma janela (frame ). São ressaltados as seguintes propriedades rótulo dabarra de título, tamanho do frame, localização e cor do fundo.
class Exemplo0901 extends JFrame {Exemplo0901() / / construtor - mesmo nome da classe {
setTitle("Minha primeira Janela"); / / título da janela setSize(400,50); / / dimensões da janela -largura e comp.
/ / Esquecer de chamar o método setSize() faz com que / / somente a barra de título seja apresentada setLocation(150,150); / / canto esquerdo e topo da tela setResizable(false); / / não pode ser redimensionada getContentPane().setBackground(Color.gray); / / cor fundo
}
public static void main(String args[]){
JFrame Janela = new Exemplo0901();Janela.show();
/ / rotina para fechar a janela: WindowListener J = new WindowAdapter(){
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
}}obs: Ao finalizar este programa pressionando-se o botão fechar, a execução será desviada para a tela doDOS.
Explicação:
class Exemplo0901 extends Jframe;
A classe Exemplo0901 herda da classe Jframe do java para utilizar os seus recursos.
Exemplo0901()É o constru or da classe. Nele redefinimos as particularidades da nossa janela como o título, dimensões,localização e a cor de fundo.
t
JFrame Janela = new Exemplo0901();Declaração e instanciação do objeto Janela . Observe que ele invoca o construtor Exemplo0901 .
Janela.show();O objeto janela é apresentado com o método show(). WindowListener J = new WindowAdapter()
{ public void w indowClosing(Window Event e){System.exit(0);
}} ;Janela.addWindowListener(J);Estas instruções são necessárias para encerrar a janela da aplicação e do DOS.
Tabela 1 – Constantes de cores padrão para a classe Color
black (preto) green (verde) red (vermelho)blue (azul) l igthGray (cinza-claro) white (branco)cyan (ciano) magenta (magenta) yellow (amarelo)darkGray (cinza-escuro) orange (laranja)gray (conza) pink (rosa)
Classe JLabel - rótulo e ImageIcon - ícone
JLabel: Esta classe é utilizada para exibir uma linha de texto simples. Podem ser adicionados ícones em seurótulo. Existem várias propriedades de um label como alinhamento, tipo de letra, cor, tamanho etc. Um labelpode apresentar um texto, um ícone, ou ainda os dois ao mesmo tempo.
JLabel <nome do label> = new JLabel (“texto”, <ícone>, JLabel.alinhamento);
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
Tabela de alinham ento: O alinhamento é em relação ao frame (tela)
constante do Java alinhamento constante numéricaJLabel.CENTER centralizado zeroJLabel.RIGHT alinhado à direita umJLabel.LEFT alinhado à esquerda dois- Alinhamento padrão: à esquerda Sendo L1 o objeto JLabel, apresentamos as configurações mais comuns:
L1.setForeground(Color.<constante-de-cor>);O método setForeground() define a cor do primeiro-plano, neste caso a cor do fonte.
L1.setBackGround(new Color(220, 220, 220));
Define a cor de fundo da janela. Os números que aparecem dentro dos parênteses especificam o padrãoRGB (Red-Green-Blue) e definem as tonalidades das cores vermelho, verde e azul. Os números para astonalidades podem variar de 0 a 255 e a sua mistura irá formar uma cor específica.
L1.setFont(new Font(fonte, estilo, tamanho));setFont() define o fonte do rótulo.
Fonte As fontes que um computador possui instalado variam de sistema para sistema. Para estabelecer uma linhade base comum, o modelo AWT define cinco nomes lógicos de fontes: SansSerif, Serif, MonoSpaced,Dialog eDialogInput. Esses nomes de fontes são mapeados para fontes que realmente existem na máquina do
cliente.
Estilo Podem ser:Font.PLAIN regularFont.BOLD negritoFont.ITALIC itálicoFont.BOLD + Font.ITALIC negrito e itálico
Tamanho Define o tamanho do fonte.
Propriedades mais comuns de um Label:
Método Função ExemploJLabel() Construtor L1 = new JLabel("Nome");
L2 = new JLabel("Idade",JLabel.CENTER);getText() Obtém o texto. L1.getText();setText() Especifica o texto. L1.setText("Digite a senha");
Para a inserção de uma imagem utilize a classe ImageIcon:
ImageIcon <nome do ícone> = new ImageIcon(“path da imagem”);
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
setTitle("Inserindo Labels e Imagens na Janela");setSize(350,120);setLocation(50,50);
getContentPane().setBackground(new Color(220,220,220));L1 = new JLabel(" Aprendendo",JLabel.LEFT);L1.setForeground(Color.red);L2 = new JLabel(icone);L3 = new JLabel("Inserir ",JLabel.RIGHT);L3.setForeground(Color.blue);L4 = new JLabel("Labels/Imagens",icone,JLabel.CENTER);L4.setFont(new Font("Serif",Font.BOLD,20));L4.setForeground(Color.black);
getContentPane().setLayout(new GridLayout(4,1)); / / Divide a Janela em 4 linhas e uma coluna
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
- Todos os componentes gráficos (botões, labels, caixas de edição etc) precisam ser adicionados às
células do frame. Para que isto seja possível é preciso utilizar um gerenciador de layout, sendo osetLayout um deles.
- GridLayout(linha, colunas) define como será a tabela no frame. os argumentos são o número delinhas e o número de colunas.
- Por exemplo, se definirmos a instrução: getContentPane().setLayout(new GridLayout(4, 1));temos uma tabela de 4 linhas por 1 coluna:
Célula 1
Célula 2
Célula 3
Célula 4
- Se não definirmos o layout, o frame terá uma única célula.
Cada objeto deve ser adicionado à tabela do frame com o método add (). A ordem de inserção é importantee define a disposição dos objetos. A inserção dos objetos deve obedecer a sequencia: de cima para baixo eda esquerda para a direita. Não é possível desobedecer esta sequencia.
Classe JButton - objeto botão- Sintaxe para instanciação:
JButton <botão> = new JButton("texto", ícone);Da mesma forma que um label, o botão pode ser inicializado somente com um texto, somente com um íconeou com ambos.
Sendo b1 um objeto botão:
b1.setHorizontalTextPosition(AbstractButton.LEFT);Define a posição do texto no botão. Essa propriedade deve ser definida quando o botão possui textoe ícone. O padrão é que o texto apareça do lado direito da imagem. A configuração acima especifica que o
texto apareça do lado esquerdo da imagem (LEFT).
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
b1.setForeground(Color.black);Define a cor do primeiro plano, isto é, a cor da fonte.
b1.setFont(new Font("ScriptS", Font.BOLD, 20));Define a fonte, o estilo e o tamanho da letra.
b1.setEnabled(true);Deixa o botão ativado. Esta instrução pode ser omitida porque todo botão quando criado estáautomaticamente habilitado. Caso você queira desabilitar o botão, coloque false como argumento dométodo. Neste caso, o botão aparecerá em tons de cinza e não poderá ser pressionado.
b1.addActionListener(this);O método addActionListener (this ) registra o botão para que o método actionPer ormed possa reconhecer oseventos gerados pelo objeto.
f
b1.setToolTipText("Pressione para realizar uma busca");Este método insere uma linha de mensagem quando o botão do mouse é passado sobre o botão. No final dotexto, as teclas de atalho também são exibidas para orientar o usuário a este ação.
b1.setMnemonic(KeyEvent.VK_B);Este método é utilizado para estabelecer as teclas de atalho para o botão. Neste caso, ALT+B fará o mesmoefeito que o pressionamento do botão.
ATENÇÃO: As constantes para as teclas estão definidas na classe KeyEvent. Todas as teclas possuem umaconstante definida. Abaixo exemplificamos as teclas mais comuns a esta finalidade:
VK_A ... VK_Z VK_0 ... VK_9 VK_F1 ... VK_F12
getContentPane().setLayout(new Flow Layout());Outro gerenciador de layout é o FlowLayout(). Este gerenciador funciona como um editor de textos. Ele vaiinserindo os objetos da esquerda para a direita no frame e quando não houver mais espaços ele saltará paraa célula de baixo automaticamente.
public void actionPerformed( ActionEvent e){}O método actionPerformed () é responsável por reconhecer em que objeto o usuário realizou um evento. Oargumento e da classe ActionEvent recebe a identificação do objeto que recebeu a ação do usuário.
e.getSource()Este método retorna a identificação do objeto que recebeu o evento.
O programa a seguir mostra o uso de botões. Quando um botão é pressionado, uma mensagem éapresentada na tela do DOS.
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
b1 = new JButton("Busca",icone);b1.setHorizontalTextPosition(AbstractButton.LEFT);b1.setBackground(new Color(100,180,180));b1.setForeground(Color.black);b1.setFont(new Font("ScriptS", Font.BOLD, 20));b1.setEnabled(true);b1.addActionListener(this);b1.setToolTipText("Pressione para realizar uma busca");b1.setMnemonic(KeyEvent.VK_B);
b2 = new JButton("Cancelar");
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
public static void main(String args[]){JFrame Janela = new Exemplo0903();Janela.show();
WindowListener x = new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);
}};Janela.addWindowListener(x);}
}
Explicações
public class Exemplo0903 extends JFrameimplements ActionListener
ActionListener é uma interface. Todas as aplicações que utilizam componentes que interagem com usuáriosprecisam de uma interface. Em Java existe um método padrão para o processamento de todos os objetosque interagem com o usuário. Um destes métodos é o actionPerformed. Através deste método devemosreconhecer em que objeto o usuário realizou uma ação.
Classe JTextField - caixa de texto
Resumo dos métodos:
JTextField() Cria uma caixa de texto vazia. T1 = new JTextField();JTextField(String) Cria uma caixa de texto com a string
dada.T1 = new JTextField("0");
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
getText() Obtém o texto do objeto. T1.getText();setEditable(Boolean) Especifica se o componente é editável ou
não.
T3.setEditable(false);
setText() Especifica o texto a ser contido nocomponente.
T3.setText("" + result);*
* Neste caso, a variável numérica result é concatenada com "" (string vazia) a fim de facilitar a conversãopara um valor String, visto que a caixa de texto somente recebe valores caracteres.
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
L1 = new JLabel("Num.1");L1.setForeground(Color.black);L1.setFont(new Font("",Font.BOLD,14));L2 = new JLabel("Num.2");L2.setForeground(Color.black);L2.setFont(new Font("", Font.BOLD, 14));L3 = new JLabel("Total");L3.setFont(new Font("", Font.BOLD, 14));
B1 = new JButton ("+");B1.addActionListener(this);B2 = new JButton ("-");
B2.addActionListener(this);B3 = new JButton ("x");B3.addActionListener(this);B4 = new JButton ("/");B4.addActionListener(this);B5 = new JButton ("Limpar");B5.addActionListener(this);B5.setBackground(Color.black);B5.setForeground(Color.white);
T1 = new JTextField() ;T2 = new JTextField() ;
T3 = new JTextField() ;T3.setEditable(false); / / somente leitura getContentPane().add(L1);getContentPane().add(T1);getContentPane().add(B1);getContentPane().add(B2);getContentPane().add(L2);getContentPane().add(T2);getContentPane().add(B3);getContentPane().add(B4);getContentPane().add(L3);getContentPane().add(T3);getContentPane().add(B5);
}
public void actionPerformed(ActionEvent e){
if (e.getSource()==B5){T1.setText(""); T2.setText(""); T3.setText("");return;
}float N1=0,N2=0,result=0;try {
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
if (e.getSource()==B4)result = N1 / N2;T3.setText ("" + result );
}}
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
- Esta classe tem o mesmo funcionamento que um objeto da classe JTextField() a única diferença é que oscaracteres digitados podem ser substituídos por outro caractere para preservar a senha.
setEchoChar() Especifica o caractere para aapresentação do texto.
P1.setEchoChar('?');
ATENÇÃO: Caso o caracter não seja especificado através do método setEchoChar() o caracter apresentadoserá o asterisco (*).
caixa de ediçãoJTextField
caixa de edição
para senha
O programa a seguir é um programa de validação se senhas.
class Exemplo0905 extends JFrame implements ActionListener{
JLabel L1,L2;
JTextField T1;JPasswordField P1;
public static void main(String args[]){JFrame Janela = new Exemplo0905();Janela.show();
/ / para fechar a janela WindowListener x = new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);
}};Janela.addWindowListener(x);
}Exemplo0905(){setTitle("Verifica Senha");setSize(350,65);getContentPane().setBackground(new Color(150,150,150));getContentPane().setLayout(new GridLayout(2,2));L1 = new JLabel("Digite a SENHA:");L2 = new JLabel("Validacao:");
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
L1.setFont(new Font("",Font.BOLD,14));L2.setFont(new Font("",Font.BOLD,14));T1 = new JTextField();T1.setForeground(Color.red);P1 = new JPasswordField();P1.setEchoChar('?');P1.addActionListener(this); / / registra o P1 getContentPane().add(L1);getContentPane().add(P1);getContentPane().add(L2);getContentPane().add(T1);
}
public void actionPerformed(ActionEvent e){if (P1.getText().equals("JAVA"))
T1.setText("Senha Valida");else
T1.setText("Senha Invalida");}
}
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
classe NumberFormat - Formatação de valores num éricos
Para o uso desta classe é preciso importar a classe Numbe Fo mat :r r import java.text.NumberFormat;
Principais métodos:
getNumberInstance() Inicializa o objeto com a instância default da máquina do usuário,definida pelo sistema operacional. No Windows este formato estádefinido no painel de controle (Configurações regionais - Idioma,país/região.)
setMinimumFractionDigits(n) Define a quantidade de casas decimais a serem apresentados.
Segue um exemplo desta classe sem o uso de componentes gráficos:
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.
Portal Java – A maior comunidade de Java do Brasil – www.portaljava.com Todos os direitos reservados. Proibida a utilização ou replicação deste material sem prévio aviso.