Portal Java Tutorial: Pacote Swing por

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.event.*; Utilizado para o processamento dos eventos como o click do mouse em um botão, enter numa 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 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.

JLabel. tipo de letra. O objeto janela é apresentado com o método show(). Tabela 1 – Constantes de cores padrão para a classe Color black (preto) blue (azul) cyan (ciano) darkGray (cinza-escuro) gray (conza) green (verde) ligthGray (cinza-claro) magenta (magenta) orange (laranja) pink (rosa) red (vermelho) white (branco) yellow (amarelo) Classe JLabel . Exemplo0901() É o construtor da classe.exit(0). .exit(0). Existem várias propriedades de um label como alinhamento. Janela. Podem ser adicionados ícones em seu rótulo. A classe Exemplo0901 herda da classe Jframe do java para utilizar os seus recursos. Janela. Um label pode apresentar um texto. Declaração e instanciação do objeto Janela. um ícone. cor. localização e a cor de fundo.com Todos os direitos reservados. Portal Java – A maior comunidade de Java do Brasil – www.ícone JLabel: Esta classe é utilizada para exibir uma linha de texto simples. Janela.alinhamento). Nele redefinimos as particularidades da nossa janela como o título. Estas instruções são necessárias para encerrar a janela da aplicação e do DOS. ou ainda os dois ao mesmo tempo. } }.rótulo e ImageIcon . Proibida a utilização ou replicação deste material sem prévio aviso. Explicação: class Exemplo0901 extends Jframe. JLabel <nome do label> = new JLabel (“texto”. JFrame Janela = new Exemplo0901().portaljava. Observe que ele invoca o construtor Exemplo0901.addWindowListener(J). a execução será desviada para a tela do DOS.Portal Java Tutorial: Pacote Swing por Daniel Badawi public void windowClosing(WindowEvent e) { System. <ícone>. } } obs: Ao finalizar este programa pressionando-se o botão fechar. WindowListener J = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.addWindowListener(J). tamanho etc.show(). dimensões. } }.

BOLD + Font. Dialog e DialogInput.JLabel. O método setForeground() define a cor do primeiro-plano.PLAIN Font.CENTER). Fonte As fontes que um computador possui instalado variam de sistema para sistema. Proibida a utilização ou replicação deste material sem prévio aviso. 220)).Alinhamento padrão: à esquerda Sendo L1 o objeto JLabel. L2 = new JLabel("Idade". neste caso a cor do fonte.RIGHT alinhado à direita um JLabel.setForeground(Color. estilo. Para a inserção de uma imagem utilize a classe ImageIcon: ImageIcon <nome do ícone> = new ImageIcon(“path da imagem”). Exemplo L1 = new JLabel("Nome"). Serif. Esses nomes de fontes são mapeados para fontes que realmente existem na máquina do cliente.getText(). Propriedades mais comuns de um Label: Método JLabel() getText() setText() Função Construtor Obtém o texto. Os números para as tonalidades podem variar de 0 a 255 e a sua mistura irá formar uma cor específica. L1.BOLD Font.LEFT alinhado à esquerda dois .<constante-de-cor>). L1. . tamanho)).CENTER centralizado zero JLabel. MonoSpaced. Define a cor de fundo da janela.setText("Digite a senha"). Especifica o texto. 220.Portal Java Tutorial: Pacote Swing por Daniel Badawi Tabela de alinhamento: O alinhamento é em relação ao frame (tela) constante do Java alinhamento constante numérica JLabel.com Todos os direitos reservados. Portal Java – A maior comunidade de Java do Brasil – www. Estilo Podem ser: Font. apresentamos as configurações mais comuns: L1.setFont(new Font(fonte. Para estabelecer uma linha de base comum. verde e azul.ITALIC regular negrito itálico negrito e itálico Tamanho Define o tamanho do fonte.setBackGround(new Color(220. Os números que aparecem dentro dos parênteses especificam o padrão RGB (Red-Green-Blue) e definem as tonalidades das cores vermelho.portaljava.ITALIC Font. o modelo AWT define cinco nomes lógicos de fontes: SansSerif. L1. L1. setFont() define o fonte do rótulo.

LEFT). setLocation(50. Proibida a utilização ou replicação deste material sem prévio aviso.RIGHT). getContentPane().add(L4).220)).setLayout(new GridLayout(4.red).1)). L2.JLabel.awt. Quando não definido o alinhamento será centralizado. getContentPane(). ImageIcon icone=new ImageIcon("C:/windows/hlpglobe. L4 = new JLabel("Labels/Imagens". Exemplo0902() { setTitle("Inserindo Labels e Imagens na Janela").120). setSize(350.event. Janela. L4.icone.setBackground(new Color(220. L4. L4.awt. import javax.JLabel. WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) Portal Java – A maior comunidade de Java do Brasil – www.com Todos os direitos reservados.portaljava.add(L3).Font. getContentPane().220. .CENTER). //Divide a Janela em 4 linhas e uma coluna getContentPane().setForeground(Color.gif").setForeground(Color.add(L1).show(). getContentPane().*. L3. } public static void main(String args[]) { JFrame Janela=new Exemplo0902().Portal Java Tutorial: Pacote Swing por Daniel Badawi A imagem deve ser adicionada a um objeto JLabel. getContentPane(). O programa seguinte mostra o uso de rótulos (label) destacando a apresentação de texto.50).*. rótulo JLabel import java. L3.JLabel.add(L2). L1.setFont(new Font("Serif". class Exemplo0902 extends JFrame { JLabel L1.black).BOLD.blue).setForeground(Color. import java.swing.20)). L2 = new JLabel(icone). ícone além do alinhamento no frame.*. L3 = new JLabel("Inserir ". L1 = new JLabel(" Aprendendo".

setLayout(new GridLayout(linha.Se não definirmos o layout.exit(0).LEFT). sendo o setLayout um deles. . caixas de edição etc) precisam ser adicionados às células do frame.objeto botão . } }. Não é possível desobedecer esta sequencia. Gerenciador de Layout – setLayout() Sintaxe geral: getContentPane(). Define a posição do texto no botão. Essa propriedade deve ser definida quando o botão possui texto e ícone. somente com um ícone ou com ambos. o frame terá uma única célula. Proibida a utilização ou replicação deste material sem prévio aviso. colunas) define como será a tabela no frame. Janela. GridLayout(linha. o botão pode ser inicializado somente com um texto. Todos os componentes gráficos (botões.Sintaxe para instanciação: JButton <botão> = new JButton("texto". ícone).Portal Java Tutorial: Pacote Swing por Daniel Badawi { } } System. Por exemplo. Da mesma forma que um label. labels. Portal Java – A maior comunidade de Java do Brasil – www. Classe JButton . se definirmos a instrução: getContentPane(). A configuração acima especifica que o texto apareça do lado esquerdo da imagem (LEFT).com Todos os direitos reservados.setLayout(new GridLayout(4.portaljava. Cada objeto deve ser adicionado à tabela do frame com o método add().setHorizontalTextPosition(AbstractButton. A ordem de inserção é importante e define a disposição dos objetos. temos uma tabela de 4 linhas por 1 coluna: - - Célula 1 Célula 2 Célula 3 Célula 4 . Sendo b1 um objeto botão: b1. O padrão é que o texto apareça do lado direito da imagem. 1)).addWindowListener(x). os argumentos são o número de linhas e o número de colunas. coluna)). Para que isto seja possível é preciso utilizar um gerenciador de layout. A inserção dos objetos deve obedecer a sequencia: de cima para baixo e da esquerda para a direita.

180.180)).setToolTipText("Pressione para realizar uma busca"). .. Ele vai inserindo os objetos da esquerda para a direita no frame e quando não houver mais espaços ele saltará para a célula de baixo automaticamente.BOLD.setLayout(new FlowLayout()).VK_B). O argumento e da classe ActionEvent recebe a identificação do objeto que recebeu a ação do usuário. as teclas de atalho também são exibidas para orientar o usuário a este ação. O programa a seguir mostra o uso de botões. b1. public void actionPerformed(ActionEvent e) { } O método actionPerformed() é responsável por reconhecer em que objeto o usuário realizou um evento. Quando um botão é pressionado. No final do texto. Este gerenciador funciona como um editor de textos. Font. b1. b1. Define a cor do fundo do botão. b1.Portal Java Tutorial: Pacote Swing por Daniel Badawi b1.setEnabled(true).setMnemonic(KeyEvent. isto é.com Todos os direitos reservados.. Portal Java – A maior comunidade de Java do Brasil – www.setBackground(new Color(100. b1. Abaixo exemplificamos as teclas mais comuns a esta finalidade: VK_A . Define a cor do primeiro plano. Outro gerenciador de layout é o FlowLayout(). Esta instrução pode ser omitida porque todo botão quando criado está automaticamente habilitado. Este método insere uma linha de mensagem quando o botão do mouse é passado sobre o botão. a cor da fonte. uma mensagem é apresentada na tela do DOS. Este método é utilizado para estabelecer as teclas de atalho para o botão. Neste caso. o estilo e o tamanho da letra. Todas as teclas possuem uma constante definida.setForeground(Color. o botão aparecerá em tons de cinza e não poderá ser pressionado. VK_9 VK_F1 . 20)). e.portaljava. VK_Z VK_0 . b1. Caso você queira desabilitar o botão.black). O método addActionListener(this) registra o botão para que o método actionPerformed possa reconhecer os eventos gerados pelo objeto. coloque false como argumento do método.. Proibida a utilização ou replicação deste material sem prévio aviso. VK_F12 getContentPane().addActionListener(this).. ATENÇÃO: As constantes para as teclas estão definidas na classe KeyEvent.. Deixa o botão ativado. Define a fonte. Neste caso.getSource() Este método retorna a identificação do objeto que recebeu o evento. ALT+B fará o mesmo efeito que o pressionamento do botão.setFont(new Font("ScriptS"..

b2.icone).com Todos os direitos reservados.100).setBackground(new Color(180.setForeground(Color.LEFT). b1.swing. b1.180)).setMnemonic(KeyEvent.Portal Java Tutorial: Pacote Swing por Daniel Badawi botão JButton import java.180.*. ImageIcon icone = new ImageIcon("C:/windows/hlpglobe. b1 = new JButton("Busca". Portal Java – A maior comunidade de Java do Brasil – www.setBackground(new Color(100. b1. 20)).*.180.setHorizontalTextPosition(AbstractButton. setSize(350. public Exemplo0903() { setTitle("Inserindo botoes na janela").awt. import javax. .setFont(new Font("ScriptS".black). Proibida a utilização ou replicação deste material sem prévio aviso.setEnabled(true).50).event. setLocation(50.180)). b1.BOLD. getContentPane().addActionListener(this). b2 = new JButton("Cancelar"). b1. b1.VK_B).gif"). b1.portaljava.*. Font. import java.setToolTipText("Pressione para realizar uma busca"). public class Exemplo0903 extends JFrame implements ActionListener { JButton b1.awt. b1.

out.VK_C).add(b1). b2. Em Java existe um método padrão para o processamento de todos os objetos que interagem com o usuário. if (e. T1 = new JTextField().out.println("Botao 1 pressionado"). Um destes métodos é o actionPerformed. } }.addActionListener(this).show().Portal Java Tutorial: Pacote Swing por Daniel Badawi b2.setLayout(new FlowLayout()).exit(0).println("Botao 2 pressionado").getSource()==b2) System. Classe JTextField . } public static void main(String args[]) { JFrame Janela = new Exemplo0903().add(b2). Proibida a utilização ou replicação deste material sem prévio aviso. WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.setMnemonic(KeyEvent. getContentPane(). Através deste método devemos reconhecer em que objeto o usuário realizou uma ação. getContentPane(). Cria uma caixa de texto com a string T1 = new JTextField("0").caixa de texto Resumo dos métodos: JTextField() JTextField(String) Cria uma caixa de texto vazia. Todas as aplicações que utilizam componentes que interagem com usuários precisam de uma interface. b2.setToolTipText("Pressione para cancelar").portaljava. dada.getSource()==b1) System. } } Explicações public class Exemplo0903 extends JFrame implements ActionListener ActionListener é uma interface.com Todos os direitos reservados. Janela. getContentPane(). .addWindowListener(x). Portal Java – A maior comunidade de Java do Brasil – www. } public void actionPerformed(ActionEvent e) { // metodo implementado pelo ActionListener if (e. Janela.

Proibida a utilização ou replicação deste material sem prévio aviso.L2. public static void main(String args[]) { JFrame Janela=new Exemplo0904().T3.*. a variável numérica result é concatenada com "" (string vazia) a fim de facilitar a conversão para um valor String. Especifica se o componente é editável ou T3.T2. .*.50). class Exemplo0904 extends JFrame implements ActionListener { JLabel L1.L3. visto que a caixa de texto somente recebe valores caracteres.setEditable(false). T1.show().com Todos os direitos reservados. B3.awt.awt.90).Portal Java Tutorial: Pacote Swing por Daniel Badawi getText() setEditable(Boolean) setText() Obtém o texto do objeto. JTextField T1. WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System. Janela.exit(0).* componente. setLocation(50. } Exemplo0904() { setTitle("Calculadora"). B4.getText().*. Janela. B2. import java. B5. import javax. JButton B1.event.addWindowListener(x). setSize(350. caixa de edição JTextField rótulo JLabel botões JButton import java.setText("" + result). não. Programa de calculadora simples. Portal Java – A maior comunidade de Java do Brasil – www.swing. } }.portaljava. * Neste caso. Especifica o texto a ser contido no T3.

B1. B5.setLayout(new GridLayout(3. Font. getContentPane().addActionListener(this).BOLD. 14)). B5 = new JButton ("Limpar"). .setEditable(false). L3 = new JLabel("Total").BOLD. getContentPane().black).add(B5). 14)).BOLD.2"). B4 = new JButton ("/"). L2.black). B3 = new JButton ("x").N2=0.add(B2). getContentPane(). try { Portal Java – A maior comunidade de Java do Brasil – www. T3 = new JTextField().Font.result=0.addActionListener(this).add(L1).setText("").setForeground(Color. } float N1=0.setText(""). L2.setBackground(Color.setBackground(new Color(150.150)). getContentPane(). L1.add(T2). getContentPane().setForeground(Color. T3.add(L2). getContentPane(). L1 = new JLabel("Num. } public void actionPerformed(ActionEvent e) { if (e. T2 = new JTextField().4)). T2. getContentPane(). B4.add(T3).150. B5. B3. B2 = new JButton ("-"). B1 = new JButton ("+").black). L1. T1 = new JTextField(). B5. getContentPane().Portal Java Tutorial: Pacote Swing por Daniel Badawi getContentPane(). L3. L2 = new JLabel("Num. //somente leitura getContentPane().add(T1). T3. getContentPane().com Todos os direitos reservados.setFont(new Font("".1").add(B1).setFont(new Font("".white).add(B4).addActionListener(this). Font.14)).getSource()==B5) { T1.add(L3). return.setFont(new Font("".setForeground(Color. getContentPane(). Proibida a utilização ou replicação deste material sem prévio aviso.setText(""). B2.addActionListener(this).addActionListener(this).add(B3).portaljava. getContentPane().

setText ("" + result). if (e.Portal Java Tutorial: Pacote Swing por Daniel Badawi N1 = Float.com Todos os direitos reservados.getSource()==B3) result = N1 * N2.getSource()==B4) result = N1 / N2.getSource()==B1) result = N1 + N2.parseFloat(T2. T3. } } } catch (NumberFormatException erro) { T3. if (e. } if (e.parseFloat(T1.getText()). return. if (e. Proibida a utilização ou replicação deste material sem prévio aviso.getText()).portaljava.N2. Portal Java – A maior comunidade de Java do Brasil – www. .getSource()==B2) result = N1 .setText("Erro"). N2 = Float.

Janela. . setSize(350.*.150)).setBackground(new Color(150.L2. setEchoChar() Especifica o caractere apresentação do texto. getContentPane(). Proibida a utilização ou replicação deste material sem prévio aviso. JPasswordField P1.setLayout(new GridLayout(2. getContentPane(). Janela.setEchoChar('?'). L2 = new JLabel("Validacao:").65).show(). para a P1.Caixa de edição de senhas .addWindowListener(x). rótulo JLabel import java. ATENÇÃO: Caso o caracter não seja especificado através do método setEchoChar() o caracter apresentado será o asterisco (*).awt.Portal Java Tutorial: Pacote Swing por Daniel Badawi classe JPasswordField .exit(0).150. Portal Java – A maior comunidade de Java do Brasil – www.swing. JTextField T1.*. } }.awt.com Todos os direitos reservados. import java.*. WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System. L1 = new JLabel("Digite a SENHA:").Esta classe tem o mesmo funcionamento que um objeto da classe JTextField() a única diferença é que os caracteres digitados podem ser substituídos por outro caractere para preservar a senha. public static void main(String args[]) { JFrame Janela = new Exemplo0905(). import javax. class Exemplo0905 extends JFrame implements ActionListener { JLabel L1.portaljava. caixa de edição para senha JPasswordField caixa de edição JTextField //para fechar a janela } Exemplo0905() { setTitle("Verifica Senha").2)).event. O programa a seguir é um programa de validação se senhas.

equals("JAVA")) T1.add(L2).setEchoChar('?').BOLD. Proibida a utilização ou replicação deste material sem prévio aviso.addActionListener(this). //registra o P1 getContentPane(). } } Portal Java – A maior comunidade de Java do Brasil – www.Font. P1 = new JPasswordField().setForeground(Color. .setForeground(Color.setFont(new Font("". T1.BOLD.com Todos os direitos reservados.portaljava.Font. P1. L1. getContentPane().setText("Senha Valida").black).setText("Senha Invalida").red). P1. L2. else T1.getText(). T1 = new JTextField(). getContentPane().Portal Java Tutorial: Pacote Swing por Daniel Badawi L1. L2. } public void actionPerformed(ActionEvent e) { if (P1.add(T1).black).add(L1).setForeground(Color.14)).setFont(new Font("". getContentPane().14)).add(P1).

getNumberInstance().event. } } Este programa formata um valor com 4 casas decimais e o outro com 2 casas decimais.setMinimumFractionDigits(3). No Windows este formato está definido no painel de controle (Configurações regionais .println(t.NumberFormat. class Exemplo0906 extends JFrame implements ActionListener { JTextField T1. System.54.) Define a quantidade de casas decimais a serem apresentados. Proibida a utilização ou replicação deste material sem prévio aviso.Idioma. Principais métodos: getNumberInstance() Inicializa o objeto com a instância default da máquina do usuário.awt. import java. import javax. double valor1 = 1000.swing.*.*. .*.format(valor)). definida pelo sistema operacional.com Todos os direitos reservados. caixa de edição JTextField import java. import java. t = NumberFormat. int valor2 = 100.out.portaljava.text.NumberFormat. Portal Java – A maior comunidade de Java do Brasil – www.T2.text.NumberFormat.Formatação de valores numéricos Para o uso desta classe é preciso importar a classe NumberFormat: import java.text. NumberFormat df1. país/região.Portal Java Tutorial: Pacote Swing por Daniel Badawi classe NumberFormat . setMinimumFractionDigits(n) Segue um exemplo desta classe sem o uso de componentes gráficos: import java.54.df2. t. double valor=100.awt. class Formatacao { public static void main(String args[]) { NumberFormat t.

getNumberInstance().Portal Java Tutorial: Pacote Swing por Daniel Badawi public static void main(String args[]) { JFrame Janela = new Exemplo0906(). } }.portaljava. setSize(350. df1 = NumberFormat. getContentPane(). T2. Janela. } public void actionPerformed(ActionEvent e) { } } Portal Java – A maior comunidade de Java do Brasil – www.setLayout(new GridLayout(1. Proibida a utilização ou replicação deste material sem prévio aviso.format(valor2)). T2 = new JTextField(). getContentPane().setText("" + df1.format(valor1)).addWindowListener(x). df2.150.2)).setMinimumFractionDigits(4).com Todos os direitos reservados. df2 = NumberFormat. df1. T1. WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System. T1 = new JTextField(). Janela.65). . getContentPane().add(T2). } Exemplo0906() { setTitle("Formatando numeros").150)).exit(0).setBackground(new Color(150.setText("" + df2.show().getNumberInstance().setMinimumFractionDigits(2). getContentPane().add(T1).

Java 2: Ensino Didático: Desenvolvendo e Implementando Aplicações SERGIO FURGERI Editora Érica Portal Java – A maior comunidade de Java do Brasil – www. Amante de Java e do Portal Java. . São Paulo.portaljava.Portal Java Tutorial: Pacote Swing por Daniel Badawi Sobre o autor Daniel Badawi é estudante de ciências da computação da FMU. SP. Proibida a utilização ou replicação deste material sem prévio aviso. Referências bibliográficas Livros .com Todos os direitos reservados.

Sign up to vote on this title
UsefulNot useful