Interface Gráfica - 2011 - Marcos Mendes - Turma 3B

Propaganda
Interfaces Gráficas
com o Usuário
2011
Marcos Mendes
1
APIs
AWT (Abstract Window Toolkit)
e
Swing (GUI Components)
2
Pacote java.awt

Descrição
AWT (Abstract Window Toolkit) é uma biblioteca para a programação de
interfaces gráficas onde seus elementos dependem do sistema de interface
gráfica nativo (plataforma de execução).

Componentes de Interface Gráfica

Gerenciadores de Layout

Manipuladores de Eventos

Cores

Desenhos de Primitivas Gráficas

Tipos de Fontes
3
Pacote javax.swing

Descrição
Biblioteca de componentes de interface gráfica.
Possui um conjunto maior de componentes do que o
AWT. Seus componentes não dependem da
plataforma de execução. As aplicações java podem
ter a aparência de aplicações nativas (look and feel),
a aparência default é chamada de Metal.
4
Hierarquia de Componentes AWT
Object
Component
Container
Window
Panel
Applet
Dialog
Frame
FileDialog
5
Hierarquia de Componentes Swing
Component
Object
AWT
Container
Window
JWindow
Componentes
Swing
Panel
Frame
Applet
JFrame
JApplet
JComponent
JPanel
JButton
JLabel
6
O mínimo para a construção de
Interfaces Gráficas
Alguns Componentes


JFrame
É a tela (formulário) de uma aplicação de interface gráfica. É uma janela que
possui uma barra de título, botões de controle e pode apresentar uma barra de
menus.

JLabel
Utilizado para exibir um texto na frame.

JTextField
Utilizado para entrada de dados textual pelo usuário.

JButton
Utilizado para disparar a execução de uma ação.
7
O mínimo para a construção de
Interfaces Gráficas

Passos sugeridos para a criação de uma tela de interface
gráfica.
1.
Importe os pacotes necessários.
2.
Declare a classe como sendo derivada de JFrame.
3.
Declare os componentes como atributos da classe.
4.
No método construtor:
5.
a.
Crie (instancie) os componentes com o operador new.
b.
Adicione os componentes na frame.
c.
Defina as características da frame (título, tamanho, etc.).
d.
Exiba a frame.
No método main( ), instancie a classe.
8
O mínimo para a construção de
Interfaces Gráficas
//Exemplo de Tela de Interface Gráfica
import java.awt.*;
import javax.swing.*;
public class ExemploInterface extends JFrame {
JLabel lblNome;
JTextField txtNome;
JButton btnOk;
public ExemploInterface() {
lblNome = new JLabel("Nome:");
txtNome = new JTextField();
btnOk = new JButton("Krikaki");
add(lblNome, "North");
add(txtNome, BorderLayout.CENTER);
add("South", btnOk);
setTitle("Exemplo de Interface Gráfica");
pack();
setVisible(true);
}
public static void main(String[] args) {
new ExemploInterface();
}
}
9
Gerenciadores de Layout

Um container utiliza algo chamado
Gerenciador de Layout para controlar o
posicionamento e dimensionamento de seus
componentes. Alguns desses gerenciadores
são descritos a seguir:

BorderLayout

FlowLayout

GridLayout

GridBagLayout
10
BorderLayout (java.awt.BorderLayout)
North
West
Center
East
South
11
BorderLayout (java.awt.BorderLayout)

Construtores



Alguns Campos






BorderLayout ( )
BorderLayout ( int hgap, int vgap )
CENTER  “Center”
EAST  “East”
NORTH  “North”
SOUTH  “South”
WEST  “West”
Alguns Métodos


void setHgap ( int hgap )
Define o espaço horizontal entre as áreas.
void setVgap ( int vgap )
Define o espaço vertical entre as áreas.
12
FlowLayout
(java.awt.FlowLayout)
13
FlowLayout (java.awt.FlowLayout)

Construtores




Alguns Campos (alinhamento)




FlowLayout ( )
FlowLayout ( int alinhamento )
FlowLayout (int alinhamento, int hgap, int vgap )
CENTER
LEFT
RIGHT
Alguns Métodos



void setAlignment ( int alinhamento )
Define o alinhamento horizontal dos componentes.
void setHgap ( int hgap )
Define o espaço horizontal entre os componentes.
void setVgap ( int vgap )
Define o espaço vertical entre os componentes.
14
GridLayout
(java.awt.GridLayout)
15
GridLayout (java.awt.GridLayout)

Construtores




GridLayout ( )
GridLayout ( int rows, int cols )
GridLayout (int rows,int cols, int hgap,int vgap )
Alguns Métodos




void setColumns ( int cols )
Define a quantidade de colunas da grade.
void setHgap ( int hgap )
Define o espaço horizontal entre as células.
void setRows ( int rows )
Define a quantidade de linhas da grade.
void setVgap ( int vgap )
Define o espaço vertical entre as células.
16
GridBagLayout
(java.awt.GridBagLayout)
17
GridBagLayout

Construtor


(java.awt.GridBagLayout)
GridBagLayout ( )
Utilização
GridBagLayout gbl = new GridBagLayout( );
painel.setLayout (gbl);
GridBagConstraints gbc = new GridBagConstraints( );
gbc.weightx = 100; gbc.weighty = 100; // peso
gbc.gridx = 0;
gbc.gridy = 0; // posição
gbc.gridwidth = 1;
gbc.gridheight = 3; // tamanho
painel.add ( componente, gbc );
18
GridBagConstraints

(java.awt.GridBagConstraints)
Construtores

GridBagConstraints ( )

GridBagConstraints (int gridx, int gridy, int
gridwidth, int gridheight, double weightx,
double weighty, int anchor, int fill, Insets
insets, int ipadx, int ipady )
19
GridBagConstraints

(java.awt.GridBagConstraints)
Alguns Campos











fill
gridx
gridy
gridheight
gridwidth
anchor
weightx
weighty
insets
ipadx
ipady

BOTH
HORIZONTAL
NONE
VERTICAL

RELATIVE

REMAINDER




CENTER, EAST,
NORTH, NORTHEAST,
NORTHWEST, SOUTH,
SOUTHEAST,
SOUTHWEST, WEST
20
Exemplo de GridBagLayout
import java.awt.*;
import javax.swing.*;
public class ExemploGBL extends JFrame {
JButton btnNorte, btnEsq1, btnEsq2, btnEsq3, btnCentro;
public ExemploGBL() {
setLayout (new GridBagLayout( ));
GridBagConstraints gbc = new GridBagConstraints( );
btnNorte = new JButton("Norte");
gbc.weightx = 30; gbc.weighty = 30; // peso
gbc.gridx = 0;
gbc.gridy = 0; // posição
gbc.gridwidth = 3; gbc.gridheight = 1; // tamanho
gbc.fill = GridBagConstraints.BOTH; // preenchimento
add (btnNorte, gbc);
btnEsq1 = new JButton("Esquerdo 1");
gbc.gridx = 0;
gbc.gridy = 1; // posição
gbc.gridwidth = 1;
gbc.gridheight = 1; // tamanho
add(btnEsq1, gbc);
21
Exemplo de GridBagLayout
btnEsq2 = new JButton("Esquerdo 2");
gbc.gridx = 0;
gbc.gridy = 2; // posição
add(btnEsq2, gbc);
btnEsq3 = new JButton("Esquerdo 3");
gbc.gridx = 0;
gbc.gridy = 3; // posição
add(btnEsq3, gbc);
btnCentro = new JButton("Posição Central");
gbc.weightx = 100;
gbc.weighty = 100; // peso
gbc.gridx = 1;
gbc.gridy = 1; // posição
gbc.gridwidth = 2;
gbc.gridheight = 3; // tamanho
add(btnCentro, gbc);
pack();
setBounds(100, 50, 300, 200);
setVisible(true);
}
public static void main(String args[]) {
new ExemploGBL();
}
}
22
Modificando o Layout dos containers

Para alterar o gerenciador de layout de um container,
você invoca o método setLayout( ) com uma
instância do gerenciador de layout desejado.
Normalmente a chamada deste método ocorre no
construtor da classe da GUI.
...
setLayout( new FlowLayout( ) );
...
Quando utilizado o gerenciador de layout GridBagLayout,
deve-se definir um constraints para cada componente.
23
Agrupando componentes em painéis

Pode-se adicionar diretamente em uma área do
layout apenas um único componente. Para se
adicionar vários componentes, é necessário
agrupá-los em painéis, aí então adicioná-se o
painel na posição de layout desejada.
24
Agrupando componentes em painéis
import javax.swing.*;
public class TestaPainel extends JFrame {
JButton btn1, btn2, btn3;
JPanel p;
public TestaPainel() {
btn1 = new JButton("Botão 1");
btn2 = new JButton("Botão 2");
btn3 = new JButton("Botão 3");
p = new JPanel();
p.add(btn1);
p.add(btn2);
p.add(btn3);
add(p, "South");
setBounds(100, 50, 200, 300);
setVisible( true );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new TestaPainel();
}
}
25
Alguns Containers Swing
Container é um componente que aloca outros
componentes.



JFrame
JPanel
JOptionPane

JFileChooser

JColorChooser

JEditorPane

JTabbedPane
26
JFrame



(javax.swing.JFrame)
É a tela (formulário) de uma aplicação de interface gráfica. É uma janela que possui uma
barra de título, botões de controle e pode apresentar uma barra de menus.
Alguns Construtores

JFrame ( )

JFrame (String titulo)
Alguns Métodos

Component add(Component componente) ( )
Adiciona um componente na frame.

void pack ( )
Define um tamanho mínimo para a frame.

void setSize (int largura, int altura)
Define o tamanho da frame.

void setLocation (int margemEsquerda, int margemSuperior)
Define a posição no monitor de vídeo do canto superior esquerdo da frame.

void setBounds (int margemEsquerda, int margemSuperior, int largura, int altura)
Define o tamanho e a posição da frame.

void setVisible (boolean visível)
Define se a frame está ou não visível.
27
JFrame

(javax.swing.JFrame)
void setDefaultCloseOperation (int operação)
Define qual operação será realizada ao fechar a frame.

void setLayout (LayoutManager gerenciador)
Define o gerenciador de layout que será utilizado pela frame.

void setLocationRelativeTo (Component componente)
Define a posição da frame relativamente a um componente. Se o componente for null,
a frame será centralizada no vídeo.

void setIconImage (Image imagem)
Define a imagem que será usada como ícone a frame.

void setResizable (boolean alteraTamanho)
Define se o tamanho da frame pode ser alterado ou não pelo usuário.

void setMinimumSize (Dimension tamanhoMínimo)
Define o tamanho mínimo que a frame pode ter.

void setJMenuBar (JMenuBar menu)
Define uma barra de menu para a frame.

void setUndecorated (boolean decorar)
Define se a barra de título e a borda da frame irão aparecer ou não.
28
JFrame

(javax.swing.JFrame)
Método setDefaultCloseOperation()
Define a operação que deverá ser executada quando o usuário fechar a frame.
O valor da operação pode ser um dos seguintes:




DO_NOTHING_ON_CLOSE (definido em WindowConstants): Não faz nada; o
programa deve controlar o fechamento através de um ouvinte de janela.
HIDE_ON_CLOSE (definido em WindowConstants): Automaticamente esconde a
frame.
DISPOSE_ON_CLOSE (definido em WindowConstants): Automaticamente
esconde e elimina a frame.
EXIT_ON_CLOSE (definido em JFrame): Encerra a aplicação usando o método
System.exit().
O valor default é HIDE_ON_CLOSE.
29
JFrame
(javax.swing.JFrame)
import java.awt.*;
import javax.swing.*;
public class ExemploJFrame extends JFrame {
public ExemploJFrame() {
setSize(300, 200);
setMinimumSize(new Dimension(300, 200));
//setResizable(false);
setLocationRelativeTo(null);
Toolkit tk = getToolkit();
Image img = tk.getImage("duke.jpg");
setIconImage(img);
setTitle("Exemplo de Janela");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ExemploJFrame();
}
}
30
JPanel
(javax.swing.JPanel)
Componente utilizado para agrupar
componentes em uma determinada
área da frame.

Alguns Construtores
JPanel ( )
 JPanel ( LayoutManager
gerenciador )

31
Alguns Componentes Swing

JLabel

JCheckbox

JTextField

ButtonGroup

JTextArea

JRadioButton

JButton

JList

JToggleButton

JComboBox
32
JComponent

Construtor


( javax.swing.JComponent )
JComponent ( )
Alguns Métodos

void setBackground ( Color corDeFundo )
Define a cor de fundo do componente.

void setForeground ( Color corDeFrente )
Define a cor da "letra" do componente.

void setFont ( Fonte tipo )
Define a fonte do componente.

void setToolTipText ( String dica )
Define o texto de ajuda do componente.
33
JComponent

( javax.swing.JComponent )
void setOpaque ( boolean flag )
Define se o componente é opaco ou transparente.

void setBorder ( Border borda )
Define a borda do componente.



Graphics getGraphics ( )
Retorna o contexto gráfico do componente.
void paintComponent ( Graphics g )
Pinta o componente. Normalmente é sobreposto.
void setVisible ( boolean flag )
Define se o componente está visível ou não.
34
JLabel

( javax.swing.JLabel )
Construtores

JLabel ( )

JLabel ( Icon ícone )

JLabel ( Icon ícone, int alinhamento )

JLabel ( String texto )

JLabel ( String texto, Icon ícone, int alinhamento )

JLabel ( String texto, int alinhamento )
35
JLabel

( javax.swing.JLabel )
Alguns Métodos







String getText ( )
Retorna o texto do label.
void setHorizontalAlignment ( int alinhamento )
Define o alinhamento horizontal.
void setHorizontalTextPosition ( int posição )
Define a posição do texto em relação à imagem.
void setIcon ( Icon ícone )
Define uma imagem para o label
void setText ( String texto )
Define o texto do label
void setVerticalAlignment ( int alinhamento )
Define o alinhamento vertical.
void setVerticalTextPosition ( int posição )
Define a posição do texto em relação à imagem.
36
JTextField

( javax.swing.JTextField )
Alguns Construtores

JTextField ( )

JTextField ( int colunas )

JTextField ( String texto )

JTextField ( String texto, int colunas )
37
JTextField

( javax.swing.JTextField )
Alguns Métodos







void addActionListener ( ActionListener ouvinte )
Adiciona um ouvinte de ação ao componente.
String getSelectedText ( )
Retorna o texto selecionado.
int getSelectionEnd ( )
Retorna a posição final da seleção.
int getSelectionStart ( )
Retorna a posição inicial da seleção.
String getText ( )
String getText ( int posição, int tamanho )
Retorna o texto do componente.
bollean isEditable ( )
Informa se o componente pode ser editado.
38
JTextField







( javax.swing.JTextField )
void replaceSelection ( String texto )
Troca o texto selecionado.
void select ( int início, int fim )
Seleciona uma parte do texto.
void selectAll ( )
Seleciona todo o texto.
void setColumns ( int colunas )
Define a quantidade de colunas do componente.
void setEditable ( boolean b )
Define se o componente poderá ser editado.
void setHorizontalAlignment ( int alinhamento )
Define o alinhamento horizontal do texto.
void setText ( String texto )
Define o texto do componente.
39
JTextArea

( javax.swing.JTextArea )
Alguns Construtores

JTextArea ( )

JTextArea (int linhas, int colunas )

JTextArea ( String texto )

JTextArea ( String texto, int colunas, int linhas )
40
JTextArea

( javax.swing.JTextArea )
Alguns Métodos






void append ( String texto )
Adiciona um texto ao conteúdo do componente.
int getColumns ( )
Retorna o número de colunas do componente.
int getRows ( )
Retorna o número de linhas do componente.
int getLineCount ( )
Retorna o quantidade de linhas de texto contidas no componente.
void setLineWrap ( boolean quebra )
Define se há (true) ou não a quebra de linhas.
bollean setWrapStyleWord ( boolean estilo)
Define se as quebras de linha ocorrem entre as palavras (true).
41
JButton

( javax.swing.JButton )
Construtores

JButton ( )

JButton ( Icon ícone )

JButton ( String texto)

JButton ( String texto, Icon ícone)
42
JButton

( javax.swing.JButton )
Alguns Métodos

void addActionListener ( ActionListener ouvinte )
Adiciona um ouvinte de ação ao componente.

String getText ( )
Retorna o texto do componente.

void doClick ( )
Executa programaticamente um click no componente.

void setEnable ( boolean estado )
Define se o componente está ativado.

void setHorizontalAlignment ( int alinhamento )
Define o alinhamento horizontal do texto.

void setHorizontalPosition ( int posição )
Define a posição do texto em relação à imagem.

void setIcon ( Icon ícone )
Define uma imagem para o componente.
43
JButton

( javax.swing.JButton )
void setMnemonic ( char atalho )
Define uma tecla de atalho para o componente.

void setPressedIcon ( Icon ícone )
Define a imagem que será exibida quando o componente for pressionado.

void setRolloverEnabled ( boolean estado )
Define se o efeito rollover está ativado ou não.

void setRolloverIcon ( Icon ícone )
Define a imagem que será exibida quando o mouse passar por cima do
componente.

void setText ( String texto )
Define o texto do componente.

void setVerticalAlignment ( int alinhamento )
Define o alinhamento vertical do texto.

void setVerticalPosition ( int posição )
Define a posição do texto em relação à imagem.
44
Exemplo de Componente Swing
import javax.swing.*;
public class ExemploJButton extends JFrame {
JButton btn;
public ExemploJButton( ) {
setTitle ("Exemplo de Botão" );
setSize (300, 200);
btn = new JButton ("Botão de Teste" );
btn.setIcon ( new ImageIcon ("f:duke.jpg") );
btn.setRolloverIcon(new ImageIcon ("f:duke2.jpg"));
btn.setPressedIcon(new ImageIcon ("f:duke3.jpg"));
btn.setToolTipText ("Dica do componente" );
btn.setMnemonic ( 'B' );
add ( btn, "North" );
setVisible( true );
}
public static void main(String[] args) {
new ExemploJButton();
}
}
45
Exercício proposto

Crie a seguinte interface:
Agenda Pessoal
Nome:
Endereço:
Telefone:
Anterior
Próximo
Sair
46
Exercício Programa de Cálculos
Programa de Cálculos
Número:
Par / Ímpar
Primo
Fatorial
Perfeito
Resultado: ___________
47
Criação de um Painel com Borda de Título
JPanel p = new JPanel ( new GridLayout(linhas, colunas) );
TitledBorder titulo = BorderFactory.createTitledBorder("Título");
p.setBorder(titulo);
Outros métodos da classe BorderFactory para criação de bordas:
 createLineBorder ( )
Borda de linha simples

createMatteBorder ( )
Borda larga preenchida com uma cor ou ícone repetido.

createEmptyBorder ( )
Borda vazia

createEtechedBorder ( )
Borda de linha com efeito 3D.



createBevelBorder( )
createLoweredBevelBorder ( )
createRaisedBevelBorder ( )
Bordas com efeito de superfície em relevo.
48
JCheckBox

( javax.swing.JCheckBox )
Alguns Construtores

JCheckBox ( )

JCheckBox ( String texto )

JCheckBox ( String texto, boolean
estado )
49
JCheckBox

( javax.swing.JCheckBox )
Alguns Métodos







boolean isSelected ( )
Retorna true se o componente estiver selecionado.
void setSelected ( boolean estado )
Define o estado do componente.
String getText ( )
Retorna o rótulo do componente.
void setText ( String texo )
Define o rótulo do componente.
void setActionCommand ( String texto)
Define o texto de ação de commando do componente.
void addAcitonListener ( ActionListener a )
void addItemListener ( ItemListener i )
50
Exemplo com JCheckBox
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox extends JFrame implements ActionListener {
JCheckBox chkProgramacao, chkBancoDados, chkAnalise;
JButton btn;
public ExemploJCheckBox() {
chkProgramacao = new JCheckBox("Programação");
chkBancoDados = new JCheckBox("Banco de Dados");
chkAnalise = new JCheckBox("Análise de Sistemas");
btn = new JButton("krikaki");
btn.addActionListener(this);
JPanel p = new JPanel(new GridLayout(3,1));
TitledBorder titulo = BorderFactory.createTitledBorder("Assunto");
p.setBorder(titulo);
p.add(chkProgramacao);
p.add(chkBancoDados);
p.add(chkAnalise);
add(p, "Center");
add(btn, "South");
pack();
setVisible(true);
}
51
Exemplo com JCheckBox
public void actionPerformed(ActionEvent evt) {
String resp = "";
boolean nada = true;
if (chkProgramacao.isSelected()) {
resp = chkProgramacao.getText();
nada = false;
}
if (chkBancoDados.isSelected()) {
resp += "\n" + chkBancoDados.getText();
nada = false;
}
if (chkAnalise.isSelected()) {
resp += "\n" + chkAnalise.getText();
nada = false;
}
if (nada) {
JOptionPane.showMessageDialog(null, "Nenhum Assunto");
} else
JOptionPane.showMessageDialog(null, resp);
}
public static void main(String[] args) {
new ExemploJCheckBox();
}
}
52
JRadioButton ( javax.swing.JRadioButton )

Alguns Construtores

JRadioButton ( )

JRadioButton ( String texto )

JRadioButton ( String texto, boolean
estado )
53
JRadioButton ( javax.swing.JRadioButton )

Alguns Métodos







boolean isSelected ( )
Retorna true se o componente estiver selecionado.
void setSelected ( boolean estado )
Define o estado do componente.
String getText ( )
Retorna o rótulo do componente.
void setText ( String texo )
Define o rótulo do componente.
void setActionCommand ( String texto)
Define o texto de ação de commando do componente.
void addAcitonListener ( ActionListener a )
void addItemListener ( ItemListener i )
54
ButtonGroup ( javax.swing.ButtonGroup )

Utilizado para agrupar JRadioButton's

Construtor


ButtonGroup ( )
Alguns Métodos



void add ( AbstractButton b )
Adiciona um botão no grupo.
void clearSelection ( )
Limpa a seleção no grupo.
String getSelection.getActionCommand ( )
Retorna o texto de ação de comando do componente
selecionado.
55
Exemplo com JRadioButton
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJRadioButton extends JFrame implements ActionListener {
JRadioButton rbMasc, rbFem;
JButton btn;
ButtonGroup bgSexo;
public ExemploJRadioButton() {
rbMasc = new JRadioButton("Masc.", true);
rbMasc.setActionCommand("Masculino");
rbFem = new JRadioButton("Fem.");
rbFem.setActionCommand("Feminino");
bgSexo = new ButtonGroup();
bgSexo.add(rbMasc);
bgSexo.add(rbFem);
btn = new JButton("krikaki");
btn.addActionListener(this);
56
Exemplo com JRadioButton
JPanel p = new JPanel(new GridLayout(3,1));
TitledBorder titulo = BorderFactory.createTitledBorder("Sexo");
p.setBorder(titulo);
p.add(rbMasc);
p.add(rbFem);
add(p, "Center");
add(btn, "South");
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
String resp = bgSexo.getSelection().getActionCommand();
JOptionPane.showMessageDialog(null, resp);
}
public static void main(String[] args) {
new ExemploJRadioButton();
}
}
57
JList (javax.swing.JList)

Alguns Construtores




JList ( )
JList ( Object[] elementos )
JList ( ListModel modelo )
Alguns Métodos

int getSelectedIndex ( )
retorna o índice do primeiro elemento selecionado.

int [ ] getSelectedIndices ( )
retorna um array com os índices de todos os elementos selecionados.

Object getSelectedValue ( )
Retorna o primeiro elemento selecionado.

Object [ ] getSelectedValues ( )
Retorna um array com todos os elementos selecionados.

void clearSelection ( )
Limpa a seleção dos elementos.

ListModel getModel ( )
Retorna o modelo de dados da lista.

void setListData ( Object [ ] elementos )
Cria um ListModel através do array e o aplica à lista.
58
JList (javax.swing.JList)






boolean isSelectedIndex ( int índice )
retorna true se o elemento estiver selecionado.
boolean isSelectionEmpty ( )
retorna true se não houver nenhum elemento selecionado.
void setVisibleRowCount (int qtd)
Define a quantidade de elementos exibidos.
void setSelectedIndex ( int índice )
Seleciona um elemento.
void setSelectedIndices ( int [] índices )
Seleciona todos os elementos indicados no array.
void setSelectionMode ( int modo)
Define o modo de seleção, modo pode ser:
 ListSelectionModel.SINGLE_SELECTION
 ListSelectionModel.SINGLE_INTERVAL_SELECTION
 ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
59
DefaultListModel

Construtor


(javax.swing.DefaultListModel)
DefaultListModel ( )
Alguns Métodos






void addElement ( Object elemento )
Adiciona um elemento ao final da lista.
void clear ( )
Remove todos os elementos da lista.
Object getElementAt ( int índice )
Retorna o elemento especificado.
int getSize ( )
Retorna o número de elementos na lista.
boolean isEmpty ( )
Retorna true se a lista estiver vazia.
Object remove ( int índice )
Remove um elemento de índice especificado.
60
Exemplo JList
import javax.swing.*;
import java.awt.event.*;
public class ExemploJList extends JFrame implements ActionListener {
JList lista;
DefaultListModel modelo;
JButton btn;
public ExemploJList() {
String dados[] = {"JavaSE", "JavaEE", "JavaME"};
modelo = new DefaultListModel();
for (String texto:dados) {
modelo.addElement(texto);
}
// No lugar do for, você pode usar:
// lista.setListData(dados);
lista = new JList(modelo);
lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
JScrollPane sp = new JScrollPane(lista);
add(sp, "Center");
61
Exemplo JList
btn = new JButton("krikaki");
btn.addActionListener(this);
add(btn, "South");
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
Object selecionados[] = lista.getSelectedValues();
for (Object texto:selecionados) {
System.out.println(texto);
}
}
public static void main(String[] args) {
new ExemploJList();
}
}
62
JComboBox (javax.swing.JComboBox)

Alguns Construtores




JComboBox ( )
JComboBox ( Object[] elementos )
JComboBox ( ComboBoxModel modelo )
Alguns Métodos

int getSelectedIndex ( )
Retorna o índice do primeiro elemento selecionado.

Object getSelectedItem ( )
Retorna o primeiro elemento selecionado.

void addItem ( Object elemento )
Adiciona um item na lista.

void removeAllItems ( )
Remove todos os elementos da lista.

void setMaximumRowCount ( int qtdLinhas)
Define o número máximo de linhas a ser exibido.

void setSelectedIndex ( int índice )
Seleciona um determinado elemento.

ComboBoxModel getModel ( )
Retorna o modelo da lista.
63
DefaultComboBoxModel
(javax.swing.DefaultComboBoxModel)

Alguns Construtores



DefaultComboBoxModel ( )
DefaultComboBoxModel ( Object [] elementos)
Alguns Métodos





void addElement ( Object elemento )
Adiciona um elemento ao final da lista.
Object getElementAt ( int índice )
Retorna o elemento especificado.
int getSize ( )
Retorna o número de elementos na lista.
void removeAllElements ( )
Remove todos os elementos da lista.
Object removeElementAt ( int índice )
Remove um elemento de índice especificado.
64
Exemplo JComboBox
import javax.swing.*;
import java.awt.event.*;
public class ExemploJComboBox extends JFrame implements ActionListener {
JComboBox combo;
JButton btn;
public ExemploJComboBox() {
String dados[] = {"JavaSE", "JavaEE", "JavaME"};
combo = new JComboBox(dados);
combo.addItem("Todas");
combo.setSelectedIndex(3);
combo.setMaximumRowCount(2);
add(combo, "Center");
btn = new JButton("krikaki");
btn.addActionListener(this);
add(btn, "South");
65
Exemplo JComboBox
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
Object selecionado = combo.getSelectedItem();
JOptionPane.showMessageDialog(null, selecionado);
}
public static void main(String[] args) {
new ExemploJComboBox();
}
}
66
JTable

Alguns Construtores




(javax.swing.JTable)
JTable ( )
JTable ( Object [] [] dados, Object [] nomeColunas )
JTable ( TableModel modelo )
Alguns Métodos

TableModel getModel ( )
Retorna o TableModel da tabela.

int getRowCount ( )
Retorna a quantidade de linhas no modelo da tabela.

int getSelectedColumn ( )
Retorna o índice da coluna selecionada, -1 se nenhuma coluna estiver selecionada.

int getSelectedRow ( )
Retorna o índice da linha selecionada, -1 se nenhuma linha estiver selecionada.



int [ ] getSelectedRows ( )
Retorna um array contendo os índices de todas as linha selecionadas.
int getSelectedRowCount ( )
Retorna a quantidade de linhas selecionadas.
Object getValueAt (int linha, int coluna )
Retorna o valor de uma célula.

void setValueAt ( Object valor, int linha, int coluna )
Define o valor de uma célula.
67
DefaultTableModel
(javax.swing.table.DefaultTableModel)

Alguns Construtores




DefaultTableModel ( )
DefaultTableModel ( int linhas, int colunas )
DefaultTableModel ( Object [] [] dados, Object [] nomeColunas )
Alguns Métodos

void addRow ( Object [] linha )
Adiciona uma linha no final do modelo da tabela.

int getColumnCount ( )
Retorna a quantidade de colunas do modelo da tabela.

int getRowCount ( )
Retorna a quantidade de linhas do modelo da tabela.

Object getValueAt (int linha, int coluna )
Retorna o valor de uma célula.

void insertRow ( int índice, Object [] linha )
Insere uma linha no modelo da tabela.

void removeRow ( int índice )
Remove uma linha no modelo da tabela.

void setValueAt ( Object valor, int linha, int coluna )
Define o valor de uma célula.
68
Exemplo JTable
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class ExemploJTable extends JFrame implements ActionListener {
JTable tabela;
DefaultTableModel modelo;
JButton btn;
public ExemploJTable() {
String colunas[] = {"Nome", "Endereço", "Telefone"};
String dados[][] = { {"João", "Rua Tal", "4444"}, {"Maria", "Av Tal", "3333"} };
modelo = new DefaultTableModel(dados, colunas);
tabela = new JTable(modelo);
JScrollPane sp = new JScrollPane(tabela);
add(sp, "Center");
btn = new JButton("krikaki");
btn.addActionListener(this);
add(btn, "South");
pack();
setVisible(true);
}
69
Exemplo JTable
public void actionPerformed(ActionEvent evt) {
int linha = tabela.getSelectedRow();
int coluna = tabela.getSelectedColumn();
if (linha != -1 && coluna != -1) {
String dado = (String) tabela.getValueAt(linha, coluna);
JOptionPane.showMessageDialog(this, dado);
} else {
JOptionPane.showMessageDialog(this, "Nenhuma célula selecionada");
}
}
public static void main(String[] args) {
new ExemploJTable();
}
}
70
Exemplo JTable usando um ResultSet
import java.sql.*;
import javax.swing.*;
Classe Principal
onde a tabela é
criada
public class ExemploDBGrid extends JFrame {
JTable tabela;
DBGridModel modelo;
Connection con;
ResultSet rs;
public ExemploDBGrid( ) {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/uniban";
con = DriverManager.getConnection(url, "root", "admin");
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery("Select * from Cliente order by Nome");
} catch (Exception ex) {
ex.printStackTrace( );
}
71
Exemplo JTable usando um ResultSet
modelo = new DBGridModel(rs);
tabela = new JTable(modelo);
JScrollPane sp = new JScrollPane(tabela);
add(sp, "Center");
pack();
setVisible(true);
}
public static void main(String[] args) {
new ExemploDBGrid();
}
}
72
Exemplo JTable usando um ResultSet
import javax.swing.table.*;
import java.sql.*;
public class DBGridModel extends AbstractTableModel {
private ResultSet rs;
private ResultSetMetaData estrutura;
public DBGridModel(ResultSet rs) {
this.rs = rs;
try {
estrutura = rs.getMetaData();
rs.first();
} catch (SQLException e) {
e.printStackTrace();
}
}
public int getColumnCount() {
int qtdColunas = 0;
try {
qtdColunas = estrutura.getColumnCount();
} catch (SQLException e) {
e.printStackTrace();
}
return qtdColunas;
}
Classe que Implementa os
métodos obrigatórios
de AbstractTableModel
73
Exemplo JTable usando um ResultSet
public int getRowCount() {
int qtdLinhas = 0;
try {
rs.last();
qtdLinhas = rs.getRow();
} catch (SQLException e) {
e.printStackTrace();
}
return qtdLinhas;
}
public Object getValueAt(int linha, int coluna) {
Object valor = null;
try {
rs.absolute(linha + 1);
valor = rs.getObject(coluna + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return valor;
}
}
74
Exemplo JTable ResultSet Atualizável
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
Classe Principal
onde a tabela é
criada
public class ExemploDBGridRW extends JFrame implements ActionListener {
JTable tabela;
DBGridModelRW modelo;
Connection con;
ResultSet rs;
JButton btnIncluir, btnExcluir;
public ExemploDBGridRW() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/uniban";
con = DriverManager.getConnection(url, "root", "admin");
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs = st.executeQuery("Select * from Cliente");
} catch (Exception ex) {
ex.printStackTrace();
}
75
Exemplo JTable ResultSet Atualizável
modelo = new DBGridModelRW(rs);
tabela = new JTable(modelo);
JScrollPane sp = new JScrollPane(tabela);
add(sp, "Center");
btnIncluir = new JButton("Incluir");
btnIncluir.addActionListener(this);
btnExcluir = new JButton("Excluir");
btnExcluir.addActionListener(this);
JPanel pBtn = new JPanel();
pBtn.add(btnIncluir);
pBtn.add(btnExcluir);
add(pBtn, "South");
pack();
setVisible(true);
}
76
Exemplo JTable ResultSet Atualizável
}
public void actionPerformed(ActionEvent evt) {
Object btn = evt.getSource();
if (btn == btnIncluir) {
Object dados[] = new Object[5];
dados[0] = JOptionPane.showInputDialog("Qual o nome?");
dados[1] = JOptionPane.showInputDialog("Qual o sexo?");
dados[2] = JOptionPane.showInputDialog("Qual a data?");
dados[3] = JOptionPane.showInputDialog("Qual o estado?");
dados[4] = new Boolean(JOptionPane.showInputDialog("Está ativo?"));
modelo.addRow(dados);
} else if (btn == btnExcluir) {
if (tabela.getSelectedRowCount() == 0) {
JOptionPane.showMessageDialog(this, "Não há linhas selecionadas");
} else {
int linhas[] = tabela.getSelectedRows();
for (int cont = linhas.length - 1; cont >= 0; cont--) {
modelo.removeRow(linhas[cont]);
}
}
}
}
public static void main(String[] args) {
new ExemploDBGridRW();
}
77
Exemplo JTable ResultSet Atualizável
import javax.swing.table.*;
import java.sql.*;
Classe que Implementa os
métodos obrigatórios
de AbstractTableModel
public class DBGridModelRW extends AbstractTableModel {
private ResultSet rs;
private ResultSetMetaData estrutura;
public DBGridModelRW(ResultSet rs) {
this.rs = rs;
try {
estrutura = rs.getMetaData();
rs.first();
} catch (SQLException e) {
e.printStackTrace();
}
}
public int getColumnCount() {
int qtdColunas = 0;
try {
qtdColunas = estrutura.getColumnCount();
} catch (SQLException e) {
e.printStackTrace();
}
return qtdColunas;
}
78
Exemplo JTable ResultSet Atualizável
public int getRowCount() {
int qtdLinhas = 0;
int linhaCorrente = 1;
try {
linhaCorrente = rs.getRow();
rs.last();
qtdLinhas = rs.getRow();
if (linhaCorrente > 0) {
rs.absolute(linhaCorrente);
}
} catch (SQLException e) {
e.printStackTrace();
}
return qtdLinhas;
}
public Object getValueAt(int linha, int coluna) {
Object valor = null;
try {
rs.absolute(linha + 1);
valor = rs.getObject(coluna + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return valor;
}
79
Exemplo JTable ResultSet Atualizável
public String getColumnName(int coluna) {
String nomeColuna = "";
try {
nomeColuna = estrutura.getColumnName(coluna + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return nomeColuna;
}
public void setValueAt(Object value, int linha, int coluna) {
try {
rs.absolute(linha + 1);
rs.updateObject(coluna + 1, value);
rs.updateRow();
} catch (SQLException e) {
e.printStackTrace();
}
}
public boolean isCellEditable(int linha, int coluna) {
//Coluna Id não deve ser editável
if (coluna == 0) {
return false;
}
return true;
}
80
Exemplo JTable ResultSet Atualizável
}
public void addRow(Object[] linha) {
try {
rs.moveToInsertRow();
for (int cont = 0; cont < linha.length; cont++) {
rs.updateObject(cont + 2, linha[cont]);
}
rs.insertRow();
//Atualiza a tabela
fireTableDataChanged();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void removeRow(int linha) {
try {
rs.absolute(linha + 1);
rs.deleteRow();
//Atualiza a tabela
fireTableRowsDeleted(linha, linha);
} catch (SQLException e) {
e.printStackTrace();
}
}
81
Cores, Desenhos e Fontes

Color

Graphics

Font / FontMetrics
82
Color

(java.awt.Color)
Alguns Construtores






Color ( float r, float g, float b )
Color ( float r, float g, float b, float a )
Color ( int r, int g, int b )
Color ( int r, int g, int b, int a )
Valores entre
0.0f e 1.0f
Valores entre
0 e 255
Color ( int rgb )
Color ( int rgb, boolean hasalpha )
bits:
24-31=alpha; 16-23=red;
8-15=green; 0-7=blue
83
Color
(java.awt.Color)
 Alguns Campos
black
blue
cyan
darkGray
0, 0, 0
0, 0, 255
0, 255, 255
64, 64, 64
gray
green
lightGray
magenta
128, 128, 128
0, 255, 0
192, 192, 192
255, 0, 255
orange
pink
red
white
255, 200, 0
255, 175, 175
255, 0, 0
255, 255, 255
yellow
255, 255, 0
84
Color

(java.awt.Color)
Alguns Métodos

Color brighter ( )
Cria uma nova cor mais clara.

Color darker ( )
Cria uma nova cor mais escura.

int getAlpha ( )

int getBlue ( )

int getGreen ( )

int getRed ( )

int getRGB ( )
Não possui
métodos set
Retorna o valor do campo determinado.
85
Font


(java.awt.Font)
Construtores

Font ( Map atributos )

Font ( String nome, int estilo, int tamanho )
Alguns Campos

BOLD

ITALIC

PLAIN
86
Font

(java.awt.Font)
Alguns Métodos







String getFontName ( )
Retorna o nome do font face.
String getName ( )
Retorna o nome lógico da fonte.
int getSize ( )
Retorna o tamanho em pontos da fonte.
int getStyle ( )
Retorna o estilo da fonte.
boolean isBold ( )
indica se o estilo da fonte é BOLD.
boolean isItalic ( )
indica se o estilo da fonte é ITALIC.
boolean isPlain ( )
indica se o estilo da fonte é PLAIN.
87
Font

Nomes Lógicos de Fontes






(java.awt.Font)
Dialog
DialogInput
Monospaced
SansSerif
Serif
Exemplo de definição de Font de um componente:
Font f1 = new Font ( "Serif", Font.BOLD, 14 );
Button btn = new Button ( "Oi tudo bem");
btn.setFont ( f1 );
88
Font
(java.awt.Font)
import java.awt.*;
import javax.swing.*;
Exemplo que mostra
como alterar a fonte
de um componente
public class FontComp extends JFrame {
public FontComp( ) {
setTitle("Tipo de Fonte do Componente");
Font f = new Font ("SansSerif", Font.BOLD+Font.ITALIC, 20);
JButton btn = new JButton ("krikaki");
btn.setFont ( f );
getContentPane().add ( btn, "North" );
pack();
setVisible(true);
}
}
89
Font
(java.awt.Font)
import java.awt.*;
Classe para obter as
class Fontes extends Frame {
fontes instaladas no
public Fontes(){
computador local
setTitle("Tipos de Fontes");
List lst = new List();
lst.setBackground(Color.lightGray);
String fontfamily[] = GraphicsEnvironment.
getLocalGraphicsEnvironment().
getAvailableFontFamilyNames();
for (int x=0; x< fontfamily.length; x++)
lst.add(fontfamily[x]);
add(lst);
pack();
setVisible(true);
}
}
90
Alteração de Look And Feel
import javax.swing.*;
public class TestaGUI extends JFrame {
public TestaGUI() {
add(new JButton("Oi tudo bem"), "North");
pack(); setVisible(true);
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(
"javax.swing.plaf.metal.MetalLookAndFeel");
// UIManager.getCrossPlatformLookAndFeelClassName()
//"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
//"javax.swing.plaf.metal.MetalLookAndFeel"
//"com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
//"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
new TestaGUI();
}
}
91
Manipulação de Eventos

Eventos de Ação

Eventos de Janela

Eventos de Mouse
92
Eventos de Ação

Interface ActionListener

Método

actionPerformed

Não possui classe adaptadora

Eventos gerados por:

Button

List

MenuItem

TextField
93
Eventos de Ação
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
Ação de um
Botão 1
public class AcaoBtn1 extends JFrame {
JButton btn;
public AcaoBtn1 ( ) {
btn = new JButton ("Botão de Comando" );
btn.addActionListener ( new ActionListener( ) {
public void actionPerformed ( ActionEvent evt ) {
btn.setBackground ( Color.red );
}
} );
add ( btn, "North" );
setVisible( true );
}
public static void main (String args[ ]) {
new AcaoBtn1( );
}
}
94
Eventos de Ação
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
Ação de um
Botão 2
public class AcaoBtn2 extends JFrame implements ActionListener {
JButton btn;
public AcaoBtn2 ( ) {
btn = new JButton ("Botão de Comando" );
btn.addActionListener ( this ) ;
add( btn, "North" );
setVisible ( true );
}
public void actionPerformed ( ActionEvent evt ) {
Object source = evt.getSource( );
if ( source == btn )
btn.setBackground(Color.red);
}
public static void main (String args[ ]) {
new AcaoBtn2( );
}
}
95
Exercício

Implementar a funcionalidade do
programa de cálculos.
96
Eventos de Janela

Interface WindowListener

Métodos








windowClosing
windowOpened
windowIconified
windowDeiconified
windowClosed
windowActivated
windowDeactivated
Classe adaptadora: WindowAdapter
97
Eventos de Janela
import java.awt.*;
import java.awt.event.*;
Fechamento
import javax.swing.*;
de Janela
public class FechaFrame extends JFrame {
public FechaFrame ( ) {
setTitle ( "Oi Tudo Bem" );
setSize (300, 200);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener ( new WindowAdapter ( ) {
public void windowClosing ( WindowEvent e ) {
int resp = JOptionPane.showConfirmDialog(null, "Deseja sair ?");
if ( resp == JOptionPane.YES_OPTION )
System.exit ( 0 );
}
} );
setVisible ( true );
}
public static void main ( String args [ ] ) {
new FechaFrame( );
}
98
}
Eventos de Janela
import java.awt.event.*;
import javax.swing.*;
public class EventosJanela extends JFrame {
public EventosJanela() {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowListener() {
public void windowClosing (WindowEvent e) {
int resp = JOptionPane.showConfirmDialog(null, "Deseja sair ?");
if (resp == JOptionPane.YES_OPTION)
System.exit(0);
}
public void windowOpened (WindowEvent arg0) {
System.out.println("Janela Aberta!");
}
public void windowClosed (WindowEvent arg0) {
System.out.println("Janela Fechada!");
}
99
Eventos de Janela
public void windowIconified (WindowEvent arg0) {
System.out.println("Janela Minimizada!");
}
public void windowDeiconified (WindowEvent arg0) {
System.out.println("Janela Restaurada!");
}
public void windowActivated (WindowEvent arg0) {
System.out.println("Janela Ativada!");
}
public void windowDeactivated (WindowEvent arg0) {
System.out.println("Janela Desativada!");
}
});
setVisible(true);
}
public static void main(String args[]) {
new EventosJanela();
}
}
100
JColorChooser
(javax.swing.JColorChooser)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogoCor extends JFrame implements ActionListener {
JButton btn;
public DialogoCor() {
btn = new JButton("krikaki");
btn.addActionListener(this);
getContentPane().add(btn, "West");
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Color corAtual = btn.getBackground();
Color novaCor = JColorChooser.showDialog(DialogoCor.this,
"Escolha a cor", corAtual);
btn.setBackground(novaCor);
}
public static void main ( Stirng args [ ] ) {
new DialogoCor ( );
}
}
101
Eventos de Mouse

Interface MouseListener

Métodos







mousePressed
mouseReleased
mouseEntered
mouseExited
mouseClicked
Classe adaptadora: MouseAdapter
Interface MouseMotionListener

Métodos



mouseDragged
mouseMoved
Classe adaptadora: MouseMotionAdapter
102
Eventos de Mouse
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
Eventos de Mouse
no Botão
public class Botao extends JFrame {
JButton btn;
public Botao ( ) {
btn = new JButton ("Passe o mouse aqui !");
btn.addMouseListener ( new MouseAdapter ( ) {
public void mouseEntered ( MouseEvent evt ) {
btn.setBackground ( Color.yellow );
}
public void mouseExited ( MouseEvent evt ) {
btn.setBackground ( Color.red );
}
} );
add ( btn, "South" );
setVisible ( true );
}
public static void main ( Stirng args [ ] ) {
new Botao ( );
}
}
103
Eventos de Teclado
104
Exemplo: Várias Janelas
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Janelas extends JFrame implements ActionListener {
JFrame fr1, fr2;
JButton btnFr1, btnFr2, btnVolta1, btnVolta2;
public Janelas() {
setTitle("Janela Principal");
btnFr1 = new JButton("Chama Janela 1");
btnFr1.addActionListener(this);
btnFr2 = new JButton("Chama Janela 2");
btnFr2.addActionListener(this);
add(btnFr1, "North");
add(btnFr2, "South");
105
Exemplo: Várias Janelas
fr1 = new JFrame("Janela 1");
fr1.setBounds(100, 100, 300, 100);
fr1.getContentPane().setBackground(Color.yellow);
btnVolta1 = new JButton("Voltar");
fr1.add(btnVolta1, "South");
btnVolta1.addActionListener(this);
fr2 = new JFrame("Janela 2");
fr2.setBounds(200, 200, 300, 100);
fr2.getContentPane().setBackground(Color.green);
btnVolta2 = new JButton("Voltar");
fr2.add(btnVolta2, "South");
btnVolta2.addActionListener(this);
setSize(300, 200);
setVisible(true);
}
106
Exemplo: Várias Janelas
}
public void actionPerformed(ActionEvent evt) {
Object btn = evt.getSource();
if (btn == btnFr1) {
setVisible(false);
fr1.setVisible(true);
}
if (btn == btnFr2) {
setVisible(false);
fr2.setVisible(true);
}
if (btn == btnVolta1) {
setVisible(true);
fr1.setVisible(false);
}
if (btn == btnVolta2) {
setVisible(true);
fr2.setVisible(false);
}
}
public static void main(String[] args) {
new Janelas();
}
107
Exemplo: Várias Janelas
public void actionPerformed(ActionEvent evt) {
Object btn = evt.getSource();
if (btn == btnFr1) {
setVisible(false);
fr1.setVisible(true);
}
if (btn == btnFr2) {
setVisible(false);
fr2.setVisible(true);
}
if (btn == btnVolta1) {
setVisible(true);
fr1.setVisible(false);
}
if (btn == btnVolta2) {
setVisible(true);
fr2.setVisible(false);
}
108
Exemplo: Botão Personalizado
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Botão extends JButton {
String texto;
Font letra;
Color frente, fundo, realce;
public Botão(String texto, Font letra, Color frente, Color fundo, Color realce){
super(texto);
this.texto = texto;
this.letra = letra;
this.frente = frente;
this.fundo = fundo;
this.realce = realce;
109
Exemplo: Botão Personalizado
setFont(letra);
setForeground(frente);
setBackground(fundo);
addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent evt) {
setBackground(Botão.this.realce);
Font letra = Botão.this.letra;
letra = new Font(letra.getFamily(), letra.getStyle(), letra.getSize() + 5);
Botão.this.setFont(letra);
}
public void mouseExited(MouseEvent evt) {
setBackground(Botão.this.fundo);
Botão.this.setFont(Botão.this.letra);
}
});
}
}
110
Tipos de Cursor (java.awt.Cursor)

CROSSHAIR_CURSOR
Cursor em formato de cruz.

CUSTOM_CURSOR
Cursor personalizado.

DEFAULT_CURSOR
Cursor default

E_RESIZE
Redimensionamento Leste

HAND_CURSOR
Cursor em formato de mão

MOVE_CURSOR
Cursor de movimentação

N_RESIZE_CURSOR
Redimensionamento Norte
111
Tipos de Cursor (java.awt.Cursor)

NE_RESIZE_CURSOR
Redimensionamento Nordeste

NW_RESIZE_CURSOR
Redimensionamento Noroeste

S_RESIZE_CURSOR
Redimensionamento Sul

SE_RESIZE_CURSOR
Redimensionamento Sudeste

SW_RESIZE_CURSOR
Redimensionamento Sodoeste

TEXT_CURSOR
Texto

W_RESIZE_CURSOR
Redimensionamento Oeste

WAIT_CURSOR
Cursor de pausa
112
Exemplo de Tipos de Cursor
import java.awt.*;
import javax.swing.*;
public class Cursores extends JFrame {
public Cursores() {
setLayout(new FlowLayout());
JButton btn1 = new JButton("Cruz");
JButton btn2 = new JButton("Mão");
JButton btn3 = new JButton("Movimento");
JButton btn4 = new JButton("Texto");
JButton btn5 = new JButton("Espera");
btn1.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
btn2.setCursor(new Cursor(Cursor.HAND_CURSOR));
btn3.setCursor(new Cursor(Cursor.MOVE_CURSOR));
btn4.setCursor(new Cursor(Cursor.TEXT_CURSOR));
btn5.setCursor(new Cursor(Cursor.WAIT_CURSOR));
113
Exemplo de Tipos de Cursor
cp.add(btn1);
cp.add(btn2);
cp.add(btn3);
cp.add(btn4);
cp.add(btn5);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Cursores( );
}
}
114
Exemplo de Cursor Personalizado
import java.awt.*;
import javax.swing.*;
public class CursorPessoal extends JFrame {
JButton btn;
public CursorPessoal() {
Toolkit tk = Toolkit.getDefaultToolkit();
Image img = tk.getImage("imagem.gif");
setIconImage(img);
Cursor cursor = tk.createCustomCursor(img, new Point(20, 20), "Oi");
btn = new JButton("krikaki");
btn.setToolTipText("Oi tudo bem");
btn.setCursor(cursor);
add(btn, "North");
setBounds(100,100, 200, 300);
setVisible(true);
} public static void main(String[] args) {
new CursorPessoal();
}
}
115
Tratamento de Exceções
116
Tratamento de Exceções
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Excecao extends JFrame implements ActionListener {
JRadioButton divide, badCast, arrayBounds, nullPointer;
public Excecao(){
Container cp = getContentPane();
cp.setLayout(new GridLayout(7, 1));
ButtonGroup g = new ButtonGroup();
divide = new JRadioButton("Divisão por zero", false);
divide.addActionListener(this);
g.add(divide);
cp.add(divide);
117
Tratamento de Exceções
badCast = new JRadioButton("Cast Inválido", false);
badCast.addActionListener(this);
g.add(badCast);
cp.add(badCast);
arrayBounds = new JRadioButton("Índice inválido", false);
arrayBounds.addActionListener(this);
g.add(arrayBounds);
cp.add(arrayBounds);
nullPointer = new JRadioButton("Referência nula", false);
nullPointer.addActionListener(this);
g.add(nullPointer);
cp.add(nullPointer);
pack();
setVisible(true);
}
118
Tratamento de Exceções
}
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
try { if (source == divide) {
int a = 1, b;
b = 5 / (a - a);
} else if (source == badCast) {
Frame f = (Frame) evt.getSource();
} else if (source == arrayBounds) {
int a[] = new int[5];
int b = a[5];
} else {
Frame f = null; f.setSize(200, 300); }
} catch (Exception e) {
System.out.println("Exceção: " + e); }
}
public static void main ( String args [ ] ) {
Excecao oi = new Excecao();
}
119
Desenhando Formas Geométricas
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class Desenho extends JFrame {
PainelDesenhado painel;
public Desenho() {
painel = new PainelDesenhado();
add(painel);
setBounds(100, 100, 350, 250);
setVisible(true);
}
public static void main(String[] args) {
new Desenho();
}
class PainelDesenhado extends JPanel {
protected void paintComponent(Graphics g) {
//super.paintComponent(g);
g.setColor(new Color(0, 200, 0));
g.fillRect(0, 0, 300, 200);
g.setColor(Color.YELLOW);
int x[] = {150, 300, 150, 0, 150};
int y[] = {0, 100, 200, 100, 0};
g.fillPolygon(x, y, 5);
g.setColor(new Color(0, 0, 200));
g.fillOval(100, 50, 100, 100);
g.setColor(Color.WHITE);
for (int cont = 1; cont <= 10; cont++)
g.drawArc(100, cont + 80, 100, 50, 0, 180 );
}
}
}
120
Imagens

Como ler um arquivo de imagem:
Toolkit tk = Toolkit.getDefaultToolkit ( ) ;
// Arquivo Local:
Image img = tk.getImage (“nomearq.gif”);
// Imagem na Internet:
URL u = new URL ("http://www.algumlugar.com/umaImg.gif");
Image img = tk.getImage ( u );

Como alterar o ícone de uma Frame:
setIconImage ( img );
121
Imagens

Como carregar uma imagem através de um
observador de imagens (ImageObserver):
Toolkit tk = Toolkit.getDefaultToolkit ( );
Image img = tk.getImage ("nomearq.gif");
MediaTracker mt = new MediaTracker (this);
mt.addImage (img, 0);
try {
mt.waitForID ( 0 );
} catch (InterruptedException e) { }
122
Imagens
(exemplo)
import java.awt.*;
public class TestPanelImg extends Frame {
public TestPanelImg(String nomearq) {
setTitle ("Teste de Imagem");
Panel p1 = new PanelImg (nomearq);
add(p1);
setBounds(100, 100, 200, 200);
setVisible(true);
}
public static void main (String args[ ] ) {
TestPanelImg oi = new TestPanelImg(args[0]);
}
}
123
Imagens
(exemplo)
class PanelImg extends Panel {
Image img;
public PanelImg (String nomearq) {
img = Toolkit.getDefaultToolkit( ).getImage(nomearq);
MediaTracker mt = new MediaTracker(this);
mt.addImage (img, 0); // Carrega a imagem
try {
mt.waitForID (0); // Aguarda pelo carregamento
} catch ( InterruptedException e ) { }
}
public void paint ( Graphics g ) {
super.paint ( g );
Dimension d = getSize();
int largura = d.width;
int altura = d.height;
g.drawImage(img, 0, 0, largura, altura, this);
}
}
124
Imagens
import java.awt.*;
import java.io.File;
(exemplo 2)
import java.awt.event.*;
import javax.swing.*;
public class ViewImageFile extends JFrame implements ActionListener {
PanelImg pImage;
JButton btnFile;
public ViewImageFile() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Visualizador de Imagens");
pImage = new PanelImg(null);
btnFile = new JButton("Carrega Arquivo");
btnFile.addActionListener(this);
Container cp = getContentPane();
cp.add(pImage, BorderLayout.CENTER);
cp.add(btnFile, BorderLayout.SOUTH);
setBounds(100, 100, 300, 300);
setVisible(true);
}
125
Imagens
(exemplo 2)
public void actionPerformed(ActionEvent e) {
File arquivo = null;
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(this) == 0) {
arquivo = fc.getSelectedFile();
String nomearq = arquivo.getAbsolutePath();
pImage.load(nomearq);
}
}
public static void main(String[] args) {
new ViewImageFile();
}
126
Imagens
(exemplo 2)
class PanelImg extends Panel {
Image img;
public PanelImg (String nomearq) {
if (nomearq != null)
load(nomearq);
}
public void load(String nomearq) {
img = Toolkit.getDefaultToolkit().getImage(nomearq);
MediaTracker mt = new MediaTracker(this);
mt.addImage (img, 0);
// Carrega a imagem
try {
mt.waitForID (0); // Aguarda pelo carregamento
} catch ( InterruptedException e ) { }
}
127
Imagens
(exemplo 2)
public void paint ( Graphics g ) {
super.paint ( g );
Dimension d = getSize();
int largura = d.width;
int altura = d.height;
g.drawImage(img, 0, 0, largura, altura, this);
}
}
}
128
Menus

Barra de Menus



JMenu
(javax.swing.JMenuItem)
JMenuItem
Separadores


(javax.swing.JMenu)
Itens de Menus


JMenuBar
Menus

(javax.swing.JMenuBar)
addSeparator ( )
Adição da Barra de Menus à Frame

JFrame.setJMenuBar ( )
129
Menus

Abilitar e Desabilitar Itens de Menus


Ícones em Itens de Menus



setIcon ( )
JMenuItem item =
new JMenuItem ("Cut", new ImageIcon ( "cut.gif" );
Mnemônicos em Itens de Menus


setEnable ( )
setMnemonic ( )
item.setMnemonic ( 'C' );
Teclas de Atalho em Itens de Menus

setAccelerator ( )
item.setAccelerator ( KeyStroke.getKeyStroke (
KeyEvent.VK_C, InputEvent.CTRL_MASK) );
130
Menus

Caixas de Seleção em Itens de Meuns

JCheckBoxMenuItem (javax.swing.JCheckBoxMenuItem)
JCheckBoxMenuItem item = new JCheckBoxMeunItem ("Ready" );
menu.add ( item );

Botões de Rádio em Itens de Menus


ButtonGroup (javax.swing.ButtonGroup)
JRadioButtonMenuItem (javax.swing.JRadioButtonMenuItem)
ButtonGroup bg = new ButtonGroup ( );
JRadioButtonMenuItem mitem = new JRadioButtonMenuItem ("Masc" );
mitem.setSelected ( true );
JRadioButtonMenuItem fitem = new JRadioButtonMenuItem ("Fem" );
bg.add ( mitem );
bg.add ( fitem );
menu.add ( mitem );
menu.add ( fitem );
131
Menus
(javax.swing.JMenu)
class MeuMenu extends JFrame implements ActionListener {
public MeuMenu ( ) {
JMenuBar barraMenu = new JMenuBar ( );
JMenu editMenu = new JMenu ("Edit" );
JMenuItem item1 = new JMenuItem ("Paste" );
item1.addActionListener ( this );
editMenu.add ( item1 );
editMenu.addSeparator ( );
JMenuItem item2 = new JMenuItem ("Copy" );
item2.addActionListener ( this );
Importar:
editMenu.add ( item2 );
java.awt.*
barraMenu.add ( editMenu );
java.awt.event.*
setJMenuBar ( barraMenu );
javax.swing.*
show( );
}
public void actionPerformed ( ActionEvent evt ) {
}
}
132
Menus

Menus Flutuantes (pop-up)

JPopupMenu (javax.swing.JPopupMenu)
btn = new JButton ("Oi tudo bem");
getContentPane().add (btn, "South");
itemAzul = new JMenuItem ( "Azul" );
itemAzul.addActionListener ( this );
itemVermelho = new JMenuItem ( "Vermelho" );
itemVermelho.addActionListener ( this );
popup = new JPopupMenu();
popup.add ( itemAzul );
popup.add ( itemVermelho );
btn.addMouseListener ( new MouseAdapter ( ) {
public void mouseReleased ( MouseEvent evt ) {
if ( evt.isPopupTrigger() )
popup.show ( evt.getComponent(),
evt.getX(), evt.getY() );
}
} );
133
Download