Académique Documents
Professionnel Documents
Culture Documents
OBJETIVOS
• Construir janelas gráficas utilizando a linguagem Java e seus pacotes AWT e
SWING, possibilitando assim a construção de formulários para a geração de
protótipos para uma aplicação Desktop.
• Implementar eventos nos componentes gráficos para que se possa ter trocas de
mensagens entre eles.
2.1.1 – Component
Esta classe representa as características comuns de todos os componentes
(SANTOS,2004, pág.330), Como é uma classe abstrata, não é realizada uma
instância direta, porém, como todos os componentes derivam dela, é
importante ter um conhecimento básico a seu respeito.
2.1.2 - Container
Esta classe representa um componente que poderá abrigar outros
componentes dentro de si, dentre eles, destacam-se as janelas e painéis que
serão vistos nas suas versões dentro do pacote SWING.
DICA
Para diferençar um componente que possui uma versão tanto no pacote
SWING quanto no pacote AWT, o do pacote SWING vem com a letra J na
frente do seu nome, como por exemplo, Panel é no pacote AWT e JPanel, no
pacote SWING.
2.1.3. – Color
A classe Color encapsula as cores no padrão RGB (vermelho, verde e azul),
informando um valor para cada parâmetro no seu método construtor.
Exemplo:
Color verde = new Color(0,255,0);
2.1.4 – Dimension
Enquanto a classe Color encapsula as cores do padrão RGB, a classe
Dimension encapsula as dimensões (largura e altura) de um objeto.
Exemplo:
Dimension tamanho = new Dimension(200,30);
2.1.5 - Font
A classe Font representa as características das fontes que são usadas para
interpretar textos de modo a poder ser visualizado (SANTOS, 2004, pág. 333).
Exemplo:
Font fonte = new Font(“Arial”, Font.BOLD, 14)
2.2 - COMPONENTES
2.2.1. - Janelas
A janela mais comum utilizada deriva da classe JFrame. Um componente
JFrame é um contêiner estendido da casse Frame do pacote AWT e a adição de um
componente neste contêiner é feita da seguinte forma:
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import javax.swing.JFrame;
4
5 public class Janela extends JFrame
6 {
7 public Janela(String titulo, Dimension tamanho)
8 {
9 setTitle(titulo);
10 setSize(tamanho);
11 getContentPane().setLayout(null);
12 getContentPane().setBackground(new Color(200,220,200));
13 }
14 public static void main(String[] args)
15 {
16 Janela janela = new Janela("IFPA - Instituto Federal de Ensino, CIência e
17 Tecnologia",new Dimension(400,200));
18 janela.show();
19 }
20 }
a) Layout de Fluxo
A classe FlowLayout representa o layout que alinha os componentes da
esquerda para a direita e de cima para baixo, como um texto em parágrafo. Ele se
faz presente no pacote Java.awt. FlowLayout (Fig.13).
b) Layout de Bordas
A classe BorderLayout posiciona os componentes em cinco regiões no
contêiner, são elas:
d) Layout de Ficha
Um Gerenciador de Layout de fichas trata cada componente que pertence ao
contêiner como uma ficha ou um cartão (SANTOS, 2004, pág.373). O Contêiner age
como uma pilha de fichas, exibindo o primeiro componente que foi adicionado na
primeira vez que a janela for exibida.
O representante desse layout é a classe CardLayout que está presente no
pacote Java.awt.CardLayout.
e) Layout Flexível
Existe um layout que deixa bem flexível o posicionamento dos componentes,
permitindo que estes sejam posicionados de forma horizontal e vertical sem que seja
necessário que estejam com o mesmo tamanho. O representante desse layout é o
GridBagLayout, que se encontra na classe java.awt.GridBagLayout.
Pode-se trabalhar com o contêiner sem um layout definido, como foi feito na
linha 11 do código anterior, porém isso pode acarretar problemas na portabilidade
das janelas, já que os componentes dimensionados e posicionados com valores
absolutos podem ter diferentes comportamentos para cada plataforma.
2.2.2 - Rótulos
Para ser adicionado um texto curto, uma imagem ou ambos, utiliza-se um
rótulo que deriva da classe javax.swing.JLabel que por sua vez, deriva da classe
javax.swing.JComponent.
O rótulo por exibir uma linha de texto, normalmente o seu conteúdo não é
modificado.
Exemplo na aplicação:
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import javax.swing.JFrame;
5 import javax.swing.JLabel;
6
7 public class Janela extends JFrame
8 {
9 public Janela(String titulo, Dimension tamanho)
10 {
11 JLabel L1 = new JLabel();
12 JLabel L2 = new JLabel();
13
14 L1.setText("Nome do Usuário:");
15 L1.setLocation(10,10);
16 L1.setFont( new Font("Arial",Font.BOLD,21));
17 L1.setForeground(new Color(0,0,170));
18 L1.setSize(370,50);
19
20 L2.setText("Senha:");
21 L2.setLocation(10,70);
22 L2.setFont( new Font("Arial",Font.BOLD,21));
23 L2.setForeground(new Color(0,0,170));
24 L2.setSize(370,50);
25
26 setTitle(titulo);
27 setSize(tamanho);
28 getContentPane().setLayout(null);
29 getContentPane().setBackground(new Color(200,220,200));
30
31 getContentPane().add(L1);
32 getContentPane().add(L2);
33 }
34
35
36 public static void main(String[] args)
37 {
38
39 Janela janela = new Janela("IFPA - Instituto Federal de Ensino, CIência e
40 Tecnologia",new Dimension(400,200));
41 janela.show();
42
43 }
44 }
45
46 }
2.2.3 – Botões
Exemplo na Aplicação:
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import javax.swing.JButton;
5 import javax.swing.JFrame;
6 import javax.swing.JLabel;
7
8 public class Janela extends JFrame
9 {
10 public Janela(String titulo, Dimension tamanho)
11 {
12 JLabel L1 = new JLabel();
13 JLabel L2 = new JLabel();
14
15 JButton B1 = new JButton();
16 JButton B2 = new JButton();
17
18 L1.setText("Nome do Usuário:");
19 L1.setLocation(10,10);
20 L1.setFont( new Font("Arial",Font.BOLD,21));
21 L1.setForeground(new Color(0,0,170));
22 L1.setSize(370,50);
23
24 L2.setText("Senha:");
25 L2.setLocation(10,70);
26 L2.setFont( new Font("Arial",Font.BOLD,21));
27 L2.setForeground(new Color(0,0,170));
28 L2.setSize(370,50);
29
30 B1.setText("Entrar");
1 B1.setBounds(50,120,100,30);
2 B1.setBackground(new Color(150,150,150));
3 B1.setForeground(Color.WHITE);
4
5 B2.setText("Sair");
6 B2.setBounds(250,120,100,30);
7 B2.setBackground(new Color(150,150,150));
8 B2.setForeground(Color.WHITE);
9
10
11 setTitle(titulo);
12 setSize(tamanho);
13 getContentPane().setLayout(null);
14 getContentPane().setBackground(new Color(200,220,200));
15
16 getContentPane().add(L1);
17 getContentPane().add(L2);
18 getContentPane().add(B1);
19 getContentPane().add(B2);
20
21 }
22
23 public static void main(String[] args)
24 {
25
26 Janela janela = new Janela("IFPA - Instituto Federal de Ensino, CIência e
27 Tecnologia",new Dimension(400,200));
28 janela.show();
29 }
30
31 }
2.2.4. – Painéis
Servem para dividir a janela, possibilitando assim maior controle da
organização de interfaces gráficas mais complexas e, juntamente com o gerenciador
de layout, auxiliam no posicionamento dos componentes. A classe mais utilizada na
construção do Panel é a classe JPanel do pacote swing.
p1.add(<componente1>);
p1.add(<componente2>);
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import java.awt.GridLayout;
5 import javax.swing.JButton;
6 import javax.swing.JFrame;
7 import javax.swing.JLabel;
8 import javax.swing.JTextField;
9
10 public class Janela extends JFrame
11 {
12 public Janela(String titulo, Dimension tamanho)
13 {
14 JLabel L1 = new JLabel();
15 JLabel L2 = new JLabel();
16
17 JButton B1 = new JButton();
18 JButton B2 = new JButton();
19
20 JTextField T1 = new JTextField();
21 JTextField T2 = new JTextField();
22
23 T1.setText("");
24 T1.setHorizontalAlignment(JTextField.CENTER);
25
26 T2.setDisabledTextColor(Color.red);
27 T2.setBackground(Color.WHITE);
28
29 L1.setText("Nome do Usuário:");
30 L1.setLocation(10,10);
31 L1.setFont( new Font("Arial",Font.BOLD,21));
32 L1.setForeground(new Color(0,0,170));
33 L1.setSize(370,50);
34
35 L2.setText("Senha:");
36 L2.setLocation(10,70);
37 L2.setFont( new Font("Arial",Font.BOLD,21));
38 L2.setForeground(new Color(0,0,170));
39 L2.setSize(370,50);
40
41 B1.setText("Entrar");
42 B1.setBounds(50,120,100,30);
43 B1.setBackground(new Color(150,150,150));
44 B1.setForeground(Color.WHITE);
45
46 B2.setText("Sair");
47 B2.setBounds(250,120,100,30);
48 B2.setBackground(new Color(150,150,150));
49 B2.setForeground(Color.WHITE);
50
51
52 setTitle(titulo);
53 setSize(tamanho);
54 getContentPane().setLayout(new GridLayout(3,2,5,5));
55 getContentPane().setBackground(new Color(200,220,200));
56
57 getContentPane().add(L1);
58 getContentPane().add(T1);
59 getContentPane().add(L2);
60 getContentPane().add(T2);
61 getContentPane().add(B1);
62 getContentPane().add(B2);
63
64 }
65
66 public static void main(String[] args)
67 {
68 Janela janela = new Janela("IFPA - Instituto Federal de Ensino, CIência e
69 Tecnologia",new Dimension(400,200));
70 janela.show();
71 }
72 }
Nas linhas 20 e 21 são instanciados dois objetos da classe JTextField que
terão os valores de seus atributos ajustados nas linhas 23 a 27. Estes componentes
são adicionados no contêiner nas linhas 58 e 60.
REFLEXÂO
Este código está utilizando um gerenciador de layout do formato de
GridLayout (linha 54), dividindo em 4 espaços. Analise a razão dos elementos serem
adicionados na seqüência que ficarão na janela (linhas 57 a 62).
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import java.awt.GridLayout;
5 import javax.swing.JButton;
6 import javax.swing.JFrame;
7 import javax.swing.JLabel;
8 import javax.swing.JPasswordField;
9 import javax.swing.JTextField;
10
11 public class Janela extends JFrame
12 {
13 public Janela(String titulo, Dimension tamanho)
14 {
15 JLabel L1 = new JLabel();
16 JLabel L2 = new JLabel();
17
18 JButton B1 = new JButton();
19 JButton B2 = new JButton();
20
21 JTextField T1 = new JTextField();
22 JPasswordField T2 = new JPasswordField();
23
24 T1.setText("");
25 T1.setHorizontalAlignment(JTextField.CENTER);
26
27
28 T2.setDisabledTextColor(Color.red);
29 T2.setBackground(Color.WHITE);
30 T2.setEchoChar('&');
31
32 L1.setText("Nome do Usuário:");
33 L1.setLocation(10,10);
34 L1.setFont( new Font("Arial",Font.BOLD,21));
35 L1.setForeground(new Color(0,0,170));
36 L1.setSize(370,50);
37
38 L2.setText("Senha:");
39 L2.setLocation(10,70);
40 L2.setFont( new Font("Arial",Font.BOLD,21));
41 L2.setForeground(new Color(0,0,170));
42 L2.setSize(370,50);
43
44 B1.setText("Entrar");
45 B1.setBounds(50,120,100,30);
46 B1.setBackground(new Color(150,150,150));
47 B1.setForeground(Color.WHITE);
48
49 B2.setText("Sair");
50 B2.setBounds(250,120,100,30);
51 B2.setBackground(new Color(150,150,150));
52 B2.setForeground(Color.WHITE);
53
54 setTitle(titulo);
55 setSize(tamanho);
56 getContentPane().setLayout(new GridLayout(3,2,5,5));
57 getContentPane().setBackground(new Color(200,220,200));
58
59 getContentPane().add(L1);
60 getContentPane().add(T1);
61 getContentPane().add(L2);
62 getContentPane().add(T2);
63 getContentPane().add(B1);
64 getContentPane().add(B2);
65 }
66
67 public static void main(String[] args)
68 {
69
70 Janela janela = new Janela("IFPA - Instituto Federal de Ensino, CIência e
71 Tecnologia",new Dimension(400,200));
72 janela.show();
73 }
74 }
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.Font;
4 import java.awt.GridLayout;
5 import javax.swing.*;
6
7 public class Janela2 extends JFrame
8 {
9 public Janela2(String titulo, Dimension tamanho)
10 {
11 JLabel L1 = new JLabel();
12 JTextArea A1 = new JTextArea();
13 JButton B1 = new JButton();
14
15 L1.setText("Deixe a sua opinião aqui sobre o guia de Programação II:");
16 L1.setLocation(10,10);
17 L1.setFont( new Font("Arial",Font.BOLD,21));
18 L1.setForeground(new Color(0,0,170));
19 L1.setSize(600,50);
20
21 A1.setBackground(Color.WHITE);
22 A1.setBounds(10,70,570,100);
23
24 B1.setText("Enviar");
25 B1.setBounds(250,180,100,30);
26 B1.setBackground(new Color(150,150,150));
27 B1.setForeground(Color.WHITE);
28
29 setTitle(titulo);
30 setSize(tamanho);
31 getContentPane().setLayout(null);
32 getContentPane().setBackground(new Color(200,220,200));
33
34 getContentPane().add(L1);
35 getContentPane().add(A1);
36 getContentPane().add(B1);
37 }
38
39 public static void main(String[] args)
40 {
41 Janela2 janela = new Janela2("IFPA - Instituto Federal de Ensino, CIência e
42 Tecnologia",new Dimension(600,250));
43 janela.show();
44 }
45
46 }
1 import java.awt.BorderLayout;
2 import java.awt.Color;
3 import java.awt.Dimension;
4 import javax.swing.*;
5
6 public class Janela3 extends JFrame
7 {
8 public Janela3(String titulo, Dimension tamanho)
9 {
10 JScrollBar S1 = new JScrollBar(JScrollBar.HORIZONTAL,0,0,0,300);
11 JScrollBar S2 = new JScrollBar(JScrollBar.VERTICAL,0,0,0,150);
12
13 setTitle(titulo);
14 setSize(tamanho);
15 getContentPane().setLayout(new BorderLayout());
16 getContentPane().setBackground(new Color(200,220,200));
17
18 getContentPane().add(S1,BorderLayout.SOUTH);
19 getContentPane().add(S2,BorderLayout.EAST);
20
21 }
22
23 public static void main(String[] args)
24 {
25 Janela3 janela = new Janela3("IFPA - Instituto Federal de Ensino, CIência e
26 Tecnologia",new Dimension(600,250));
27 janela.show();
28 }
29
30 }
1 import java.awt.Color;
2 import java.awt.Dimension;
3 import java.awt.GridLayout;
4 import javax.swing.*;
5
6 public class Janela4 extends JFrame
7 {
8 public Janela4(String titulo, Dimension tamanho)
9 {
10 JTextArea A1 = new JTextArea();
11 JScrollPane P1 = new
12 JScrollPane(A1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.H
13 ORIZONTAL_SCROLLBAR_ALWAYS);
14
15 setTitle(titulo);
16 setSize(tamanho);
17 getContentPane().setLayout(new GridLayout(1,2,5,5));
18 getContentPane().setBackground(new Color(200,220,200));
19 getContentPane().add(P1);
20 }
21 public static void main(String[] args)
22 {
23 Janela4 janela = new Janela4("IFPA - Instituto Federal de Ensino, CIência e
24 Tecnologia",new Dimension(600,250));
25 janela.show();
26 }
27 }
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela5 extends JFrame
5 {
6 public Janela5(String titulo, Dimension tamanho)
7 {
8 JLabel L1 = new JLabel();
9 JCheckBox C1 = new JCheckBox();
10 JCheckBox C2 = new JCheckBox();
11
12 L1.setText("Informe a sua Esolha:");
13 L1.setBounds(0,0,300,30);
14 L1.setFont(new Font("Arial",Font.BOLD,14));
15
16 C1.setText("Já sei programar de forma Orientada a Objetos");
17 C1.setSelected(true);
18 C1.setBounds(20,40,550,40);
19 C1.setFont(new Font("Arial",Font.BOLD,14));
20
21 C2.setText("Ainda Não sei Programar de forma Orientada a Objetos");
22 C2.setSelected(false);
23 C2.setBounds(20,80,550,40);
24 C2.setFont(new Font("Arial",Font.BOLD,14));
25
26 setTitle(titulo);
27 setSize(tamanho);
28 getContentPane().setLayout(null);
29 getContentPane().setBackground(new Color(200,220,200));
30 getContentPane().add(L1);
31 getContentPane().add(C1);
32 getContentPane().add(C2);
33 }
34 public static void main(String[] args)
35 {
36 Janela5 janela = new Janela5("IFPA - Instituto Federal de Ensino, CIência e
37 Tecnologia",new Dimension(600,175));
38 janela.show();
39 }
40
41 }
DICA
Para informar se a caixa de checagem está ou não marcada, utiliza-se o método
setSelected(), como nas linhas 17 e 22.
2.2.11 – BOTÕES DE RADIO
São componentes semelhantes a caixa de checagem e que são
representados pela classe JRadioButton. A diferença entre a caixa de checagem e
os botões de radio é que estes podem trabalhar em conjunto com uma outra classe,
a ButtonGroup, que impede que mais de um item sejam selecionados ao mesmo
tempo. Tem-se o exemplo abaixo:
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela6 extends JFrame
5 {
6 public Janela6(String titulo, Dimension tamanho)
7 {
8 JLabel L1 = new JLabel();
9 JRadioButton R1 = new JRadioButton();
10 JRadioButton R2 = new JRadioButton();
11
12 L1.setText("Informe a sua Esolha:");
13 L1.setBounds(0,0,300,30);
14 L1.setFont(new Font("Arial",Font.BOLD,14));
15
16 R1.setText("Já sei programar de forma Orientada a Objetos");
17 R1.setSelected(true);
18 R1.setBounds(20,40,550,40);
19 R1.setFont(new Font("Arial",Font.BOLD,14));
20
21 R2.setText("Ainda Não sei Programar de forma Orientada a Objetos");
22 R2.setSelected(false);
23 R2.setBounds(20,80,550,40);
24 R2.setFont(new Font("Arial",Font.BOLD,14));
25
26 ButtonGroup G1 = new ButtonGroup();
27 G1.add(R1);
28 G1.add(R2);
29
30 setTitle(titulo);
31 setSize(tamanho);
32 getContentPane().setLayout(null);
33 getContentPane().setBackground(new Color(200,220,200));
34 getContentPane().add(L1);
35 getContentPane().add(R1);
36 getContentPane().add(R2);
37 }
38
39 public static void main(String[] args)
40 {
41 Janela6 janela = new Janela6("IFPA - Instituto Federal de Ensino, CIência e
42 Tecnologia",new Dimension(600,175));
43 janela.show();
44 }
45 }
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela7 extends JFrame
5 {
6
7 public Janela7(String titulo, Dimension tamanho)
8 {
9 String[] Disciplinas = {"Programação I", "Programação II", "Programação
10 III", "Programação IV"};
11 JLabel L1 = new JLabel();
12 JComboBox C1 = new JComboBox(Disciplinas);
13
14 L1.setText("Disciplina preferida :");
15 L1.setBounds(0,0,300,30);
16 L1.setFont(new Font("Arial",Font.BOLD,14));
17
18 C1.setMaximumRowCount(5);
19 C1.setBounds(40,40,300,30);
20
21 setTitle(titulo);
22 setSize(tamanho);
23 getContentPane().setLayout(null);
24 getContentPane().setBackground(new Color(200,220,200));
25 getContentPane().add(L1);
26 getContentPane().add(C1);
27 }
28
29 public static void main(String[] args)
30 {
31 Janela7 janela = new Janela7("IFPA - Instituto Federal de Ensino, CIência e
32 Tecnologia",new Dimension(400,175));
33 janela.show();
34 }
35 }
2.2.13 – LISTA
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela8 extends JFrame
5 {
6 public Janela8(String titulo, Dimension tamanho)
7 {
8 String[] Disciplinas = {"Programação I", "Programação II", "Programação
9 III", "Programação IV"};
10 JLabel L1 = new JLabel();
11 JList LT1 = new JList(Disciplinas);
12
13 L1.setText("Disciplina preferida :");
14 L1.setBounds(0,0,300,30);
15 L1.setFont(new Font("Arial",Font.BOLD,14));
16
17 LT1.setBounds(40,40,300,70);
18
19 setTitle(titulo);
20 setSize(tamanho);
21 getContentPane().setLayout(null);
22 getContentPane().setBackground(new Color(200,220,200));
23 getContentPane().add(L1);
24 getContentPane().add(LT1);
25 }
26
27 public static void main(String[] args)
28 {
29 Janela8 janela = new Janela8("IFPA - Instituto Federal de Ensino, CIência e
30 Tecnologia",new Dimension(400,175));
31 janela.show();
32 }
33
34 }
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela9 extends JFrame
5 {
6 public Janela9(String titulo, Dimension tamanho)
7 {
8 JMenuBar barra = new JMenuBar();
9 JMenu M1 = new JMenu("Arquivo");
10 JMenu M2 = new JMenu("Editar");
11 JMenu M3 = new JMenu("Exibir");
12 JMenu M4 = new JMenu("Ferramentas");
13 JMenu M5 = new JMenu("Sobre");
14 JMenu M6 = new JMenu("Ajuda");
15 JMenuItem MI1 = new JMenuItem("Calculadora");
16 M4.add(MI1);
17 barra.add(M1);
18 barra.add(M2);
19 barra.add(M3);
20 barra.add(M4);
21 barra.add(M5);
22 barra.add(M6);
23
24 setTitle(titulo);
25 setSize(tamanho);
26 getContentPane().setLayout(new BorderLayout());
27 getContentPane().setBackground(new Color(200,220,200));
28 setJMenuBar(barra);
29 }
30
31 public static void main(String[] args)
32 {
33 Janela9 janela = new Janela9("IFPA - Instituto Federal de Ensino, CIência e
34 Tecnologia",new Dimension(400,175));
35 janela.show();
36 }
37 }
DICA
Na Linha 28, como o objeto estende de um JFrame, basta ajustar o
setJMenubar() com o parâmetro do componente de menu que ele irá possuir.
2.2.15 – GRADE
Toda vez que se é necessário trabalhar com uma estrutura de dados na forma de
linha e coluna, tem-se que trabalhar com uma Grade, que, em Java, é representada
pela classe JTable, do pacote javax.swing.JTable.
1 import javax.swing.*;
2 import java.awt.*;
3
4 public class Janela11 extends JFrame
5 {
6 public Janela11(String titulo, Dimension tamanho)
7 {
8 String[] cabeca = {"Disciplina","Nota"};
9 Object[][] itens = {{"Matemática II","9,0"},
10 {"Aplicações em MicroInformática","10,0"},
11 {"Engenharia de Software I","8,0"},
12 {"Programação II","7,0"},
13 {"Rede de Computadores","6,5"},
14 {"Atividades Complementares","10,0"}};
15
16 JTable tabela = new JTable(itens,cabeca);
17 tabela.setBounds(0,0,350,100);
18 tabela.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
19 tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
20 tabela.setCursor(new Cursor(Cursor.HAND_CURSOR));
21
22 JScrollPane P1 = new JScrollPane(tabela);
23
24 setTitle(titulo);
25 setSize(tamanho);
26 getContentPane().setLayout(new BorderLayout());
27 getContentPane().setBackground(new Color(200,220,200));
28 getContentPane().add(P1);
29 }
30
31 public static void main(String[] args)
32 {
33 Janela11 janela = new Janela11("IFPA - Instituto Federal de Ensino, CIência e
34 Tecnologia",new Dimension(400,175));
35 janela.show();
36 }
37 }
Para instanciar um objeto do tipo JTable, é necessário que sejam passados dois
parâmetros, um para o título e outro para os itens, que é um vetor bidimensional.
Todavia, não se deve esquecer de associar a grade a um Painel móvel, como foi
feito na linha 22. Resultado do código acima está na figura 28.
Fig 17 - Grade em uma Janela
2.3 - EVENTOS
Para que exista a manipulação dos objetos e que eles possam reagir às
ações do usuário, deverá ocorrer um disparo para cada ação, que serão
representados pelos eventos. Uma das formas de declarar um evento é implementar
os métodos da interface ActionListener que ouve os eventos de ação e pode ser
registrada com a maioria dos componentes do aplicativo (SILVA, 2004, pág.60).
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4
5 public class Janela13 extends JFrame
6 {
7
8 JTextField T1 = new JTextField();
9 JPasswordField T2 = new JPasswordField();
10
11 public Janela13(String titulo, Dimension tamanho)
12 {
13 JLabel L1 = new JLabel();
14 JLabel L2 = new JLabel();
15
16 JButton B1 = new JButton();
17 JButton B2 = new JButton();
18
19 T1.setText("");
20 T1.setHorizontalAlignment(JTextField.CENTER);
21
22
23 T2.setDisabledTextColor(Color.red);
24 T2.setBackground(Color.WHITE);
25 T2.setEchoChar('&');
26
27 L1.setText("Nome do Usuário:");
28 L1.setLocation(10,10);
29 L1.setFont( new Font("Arial",Font.BOLD,21));
30 L1.setForeground(new Color(0,0,170));
31 L1.setSize(370,50);
32
33 L2.setText("Senha:");
34 L2.setLocation(10,70);
35 L2.setFont( new Font("Arial",Font.BOLD,21));
36 L2.setForeground(new Color(0,0,170));
37 L2.setSize(370,50);
38
39 B1.setText("Entrar");
40 B1.setBounds(50,120,100,30);
41 B1.setBackground(new Color(150,150,150));
42 B1.setForeground(Color.WHITE);
43
44 B1.addActionListener(new ActionListener()
45 {
46 public void actionPerformed(ActionEvent e)
47 {
48 if ((T1.getText().trim().equals("unama")) &&
49 (T2.getText().trim().equals("senha")))
50 JOptionPane.showMessageDialog(null, "Usuário e senhas
51 válidos");
52 else JOptionPane.showMessageDialog(null,"usuário e senhas
53 inválidos");
54 }
55 });
56
57 B2.setText("Sair");
58 B2.setBounds(250,120,100,30);
59 B2.setBackground(new Color(150,150,150));
60 B2.setForeground(Color.WHITE);
61
62 B2.addActionListener(new ActionListener()
63 {
64 public void actionPerformed(ActionEvent e)
65 {
66 dispose();
67 }
68 });
69
70 setTitle(titulo);
71 setSize(tamanho);
72 getContentPane().setLayout(new GridLayout(3,2,5,5));
73 getContentPane().setBackground(new Color(200,220,200));
74
75 getContentPane().add(L1);
76 getContentPane().add(T1);
77 getContentPane().add(L2);
78 getContentPane().add(T2);
79 getContentPane().add(B1);
80 getContentPane().add(B2);
81
82 }
83
84 public static void main(String[] args)
85 {
86
87 Janela13 janela = new Janela13("IFPA - Instituto Federal de Ensino, CIência e
88 Tecnologia",new Dimension(400,200));
89 janela.show();
90 }
91
92 }
Entre as linhas 44 e 55 foi adicionado ao botão B1 um evento para
realizar a validação do usuário e senha que neste formulário será inserido.
Para isso, dentro da ação addActionListener() foi instanciado um novo objeto
ActionListener onde é possível alterar o seu método actionPerformed() que irá
implementar a reação ao estimulo que o objeto sofreu. Com a adição de
eventos, as janelas começam a ganhar vida e assim um sistema poderá ser
implementado.
1 º Passo:
Ao iniciar um projeto, o NetBeans permite que seja crida uma classe já
com a extensão com a classe JFrame e ainda disponibiliza os componentes
citados anteriormente na seção 2.2 de forma visual, como se pode ver na
figuras:
Opção de JFrame Form
Componentes
2º Passo:
Sempre é bom ajustar logo o Layout da Janela de acordo com o
Gerenciador escolhido, que poderá ser feito clicando com o botão inverso do
mouse em cima do JFrame e escolher a opção set Layout, como mostra a Fig
31.
Fig 20 - Escolha do Layout da Janela
3º Passo:
Dependendo do Layout escolhido, o desenvolvedor poderá implementar
a interface gráfica que desejar, dispondo os componentes na região destinada
ao design,como mostra a Fig. 32.
DICA
Para verificar o código da classe, basta clicar na opção Source, que o
NetBeans irá exibir e permitir que seja editado.
SÍNTESE DA UNIDADE