Buscar

PC2 Aula09

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

© ELFS 139 
•  Vamos discutir como construir aplicações com interface gráfica de usuário 
(conhecida como GUI - Graphical User Interface). 
•  Numa interface gráfica existem botões, caixas de texto, painéis, barras de 
rolagem, e muitos outros componentes com os quais o usuário pode 
interagir. Java dispõe de APIs apropriadas para a construção de GUIs. 
9. Interfaces Gráficas de Usuário 
© ELFS 140 
•  Toda interface gráfica em Java tem como superclasse de mais alto nível a 
classe java.awt.Component. Logo, qualquer objeto presente em uma janela 
gráfica é um Component. 
•  Basicamente há dois tipos de componentes: 
n  descendentes diretos de Component (CheckBox, Button, Label, ...); 
n  descendentes de Container, que são componentes que podem conter 
outros componentes como Panel, ScrollPane, Window, ... 
java.lang.Object 
java.awt.Component 
javax.swing.JComponent 
java.awt.Container 
9. Interfaces Gráficas de Usuário 
© ELFS 141 
•  Toda interface gráfica requer, pelo menos, um container para acomodar os 
demais componentes que irão compor a GUI. As classes dos containers 
possuem métodos apropriados para o desenho de componentes e para o 
tratamento dos eventos gerados devido à interação com o usuário. 
•  As principais classes containers são: 
•  JFrame: Implementa uma janela gráfica com todas as funcionalidades 
(redimensionamento, fechamento, minimização, ...) sendo, portanto, a 
classe base para qualquer aplicativo com GUI. 
•  JDialog: Implementa uma janela gráfica dependente de outra janela. 
•  O posicionamento dos elementos no container é feito de maneira automática 
por gerenciadores de layout. Cada container tem seu gerenciador de layout 
padrão. Se não existir um gerenciador de layout associado ao container 
(layout = null), o posicionamento dos componentes no container deve ser 
feito manualmente. 
9. Interfaces Gráficas de Usuário 
© ELFS 142 
JComponent JMenuBar 
JList 
JLabel 
JComboBox 
JTextComponent 
JScrollPane 
JScrollBar 
JPopupMenu 
JPanel 
JEditorPane 
JTextArea 
JTextField 
JButton 
JMenuItem 
JToggleButton 
JRadioButton 
JRadioButtonMenuItem 
JMenu 
AbstractButton 
JCheckBoxMenuItem 
JCheckBox 
JTextPane 
JPasswordField 
9. Interfaces Gráficas de Usuário 
Alguns componentes de GUI: 
© ELFS 143 
Exemplo 1: Uma janela sem nada 
•  A GUI será um objeto da classe JFrame (campo privado da classe). 
•  O construtor padrão da classe cria a GUI e define o título e o tamanho da 
janela. 
•  O que acontece ao fechar a janela? 
public class Exemplo1 
{ 
 private JFrame janela; 
 
 public Exemplo1() 
 { 
 janela = new JFrame("Primeira Janela"); 
 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) 
 { 
 Exemplo1 p = new Exemplo1(); 
 } 
} 
Exemplo1.java 
Os métodos setSize() e setVisible() são obrigatórios. 
Comente essa linha e verifique o que acontece. 
9. Interfaces Gráficas de Usuário 
© ELFS 144 
Exemplo 2: Liberar a JVM ao fechar a janela 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
•  Normalmente, o fechamento de uma janela apenas a torna invisível. Com 
o método setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE), ao 
fechar a janela será chamado o método exit(), que libera a JVM. 
public class Exemplo2 
{ 
 private JFrame janela; 
 
 public Exemplo2() 
 { 
 janela = new JFrame("Primeira Janela"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) 
 { 
 Exemplo2 p = new Exemplo2(); 
 } 
} 
Exemplo2.java 
9. Interfaces Gráficas de Usuário 
Exemplo 3: Adicionando componentes 
© ELFS 145 
public class Exemplo3 
{ 
 private JFrame janela; 
 
 public Exemplo3() 
 { 
 janela = new JFrame("Janela com Componentes"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
 Container c = janela.getContentPane(); 
 JLabel rotulo = new JLabel("Elemento JLabel"); 
 JButton botao = new JButton("Botão Simples"); 
 c.setLayout(new FlowLayout()); 
 c.add(botao); 
 c.add(rotulo); 
 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) 
 { 
 Exemplo3 p = new Exemplo3(); 
 } 
} 
Notar que os componentes 
são incluídos na área de 
conteúdo (ContentPane) da 
janela gráfica. 
Exemplo3.java 
9. Interfaces Gráficas de Usuário 
O gerenciador FlowLayout acomoda os 
componentes da esquerda para a direita, 
na ordem em que são incluídos na janela. 
© ELFS 146 
O Componente JPanel 
•  GUIs complexas exigem componentes colocados em posições específicas. A 
interface gráfica a seguir, por exemplo, pode ser construída usando-se 4 
painéis: superior (P1), inferior (P2), central (P3) e à direita (P4). 
•  Um painel é um contêiner e portanto, pode conter qualquer outro 
componente, inclusive outros painéis. Cada painel pode ter o seu próprio 
gerenciador de layout. Assim, pode-se construir GUIs bastante sofisticadas. 
P1 
P2 
P3 
P4 
9. Interfaces Gráficas de Usuário 
© ELFS 147 
Exemplo 4: Janela usando painéis 
public class Exemplo4 
{ 
 private JFrame janela; 
 
 public Exemplo4() 
 { 
 janela = new JFrame("Janela com Componentes"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 Container c = janela.getContentPane(); 
 
 JPanel p1 = new JPanel(); 
 JPanel p2 = new JPanel(); 
 JPanel p3 = new JPanel(); 
 
 JLabel label = new JLabel("Elemento JLabel"); 
 JButton botao = new JButton("Botão simples"); 
 JButton outro = new JButton("Outro botão"); 
 
 p1.setBackground(Color.yellow); 
 p2.setBackground(Color.white); 
 p1.add(label); 
 p2.add(botao); 
 p3.add(outro); 
 
Exemplo4.java 
Cor de fundo do painel. 
9. Interfaces Gráficas de Usuário 
© ELFS 148 
 c.setLayout(new BorderLayout()); 
 
 c.add(p1,BorderLayout.NORTH); 
 c.add(p2,BorderLayout.SOUTH); 
 c.add(p3,BorderLayout.EAST); 
 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) 
 { 
 Exemplo4 p = new Exemplo4(); 
 } 
} 
O gerenciador BorderLayout divide 
o painel de conteúdo em 5 regiões: 
norte, sul, leste, oeste e centro. 
9. Interfaces Gráficas de Usuário 
© ELFS 149 
Gerenciadores de Layout 
•  Os gerenciadores de layout organizam os componentes GUI em um 
contêiner. São estes gerenciadores que definem o posicionamento e o 
tamanho dos componentes em um contêiner. 
•  Se o gerenciador de layout for desligado, com setLayout(null), será 
necessário posicionar cada um dos componentes manualmente, com o 
método setBounds(x, y, largura, altura). 
•  Os principais gerenciadores de layout são: 
•  FlowLayout 
•  BorderLayout 
•  GridLayout 
•  Outro gerenciador de layout importante: 
•  SpringLayout 
Gerenciador de layout bem flexível, normalmente utilizado por construtores 
automáticos de GUI. 
9. Interfaces Gráficas de Usuário 
© ELFS 150 
FlowLayout (padrão para JPanel) 
•  Organiza os componentes sequencialmente, linha por linha, da esquerda para 
a direita, na ordem em que são incluídos. Os componentes podem ser 
alinhados à esquerda, à direita ou no centro (o padrão). 
BorderLayout (padrão para JFrame e JDialog) 
•  Organiza os componentes em 5 regiões: Norte, Sul, Leste, Oeste e Centro. 
Todo o espaço não utilizado pelas regiões é deixado para o centro. Cada uma 
das regiões só aceita um componente. No caso de haver vários 
componentes, incluir um JPanel e depois adicionar os componentes ao 
painel. 
GridLayout•  Organiza os componentes em linhas e colunas, da esquerda para a direita e 
de cima para baixo. Qualquer componente adicionado a uma célula ocupa 
toda a célula. 
9. Interfaces Gráficas de Usuário 
© ELFS 151 
Exemplo 5: Uso do gerenciador FlowLayout 
public class Exemplo5 
{ 
 private JFrame janela; 
 
 public Exemplo5() 
 { 
 janela = new JFrame("Janela com FlowLayout"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 Container c = janela.getContentPane(); 
 JButton b1 = new JButton("Botão 1"); 
 JButton b2 = new JButton("Botão 2"); 
 JButton b3 = new JButton("Botão 3"); 
 c.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
 c.add(b1); 
 c.add(b2); 
 c.add(b3); 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) 
 { 
 Exemplo5 p = new Exemplo5(); 
 } 
} 
Exemplo5.java 
9. Interfaces Gráficas de Usuário 
© ELFS 152 
Exemplo 6: Uso do gerenciador BorderLayout 
public class Exemplo6 
{ 
 private JFrame janela; 
 public Exemplo6() { 
 janela = new JFrame("Janela com BorderLayout"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 Container c = janela.getContentPane(); 
 JButton b1 = new JButton("Botão 1"); 
 JButton b2 = new JButton("Botão 2"); 
 JButton b3 = new JButton("Botão 3"); 
 JButton b4 = new JButton("Botão 4"); 
 JButton b5 = new JButton("Botão 5"); 
 c.add(b1, BorderLayout.NORTH); 
 c.add(b2, BorderLayout.SOUTH); 
 c.add(b3, BorderLayout.EAST); 
 c.add(b4, BorderLayout.WEST); 
 c.add(b5, BorderLayout.CENTER); 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) { 
 Exemplo6 p = new Exemplo6(); 
 } 
} 
Exemplo6.java 
9. Interfaces Gráficas de Usuário 
© ELFS 153 
Exemplo 7: Uso do gerenciador GridLayout 
public class Exemplo7 
{ 
 private JFrame janela; 
 
 public Exemplo7() { 
 janela = new JFrame("Janela com GridLayout"); 
 janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 Container c = janela.getContentPane(); 
 c.setLayout(new GridLayout(2,2)); 
 JButton b1 = new JButton("Botão 1"); 
 JButton b2 = new JButton("Botão 2"); 
 JButton b3 = new JButton("Botão 3"); 
 JButton b4 = new JButton("Botão 4"); 
 c.add(b1); 
 c.add(b2); 
 c.add(b3); 
 c.add(b4); 
 janela.setSize(400,300); 
 janela.setVisible(true); 
 } 
 
 public static void main(String[] args) { 
 Exemplo7 p = new Exemplo7(); 
 } 
} 
Exemplo7.java 
9. Interfaces Gráficas de Usuário 
© ELFS 154 
Exercícios: Criar as GUIs a seguir. 
9. Interfaces Gráficas de Usuário

Outros materiais