Transcript Interface Gráfica - 2011 - Marcos Mendes - Turma 3B
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 FileDialog Frame 5
Hierarquia de Componentes Swing
Object JWindow Componentes Swing JPanel Window Frame Component Container AWT Panel Applet JFrame JComponent JApplet 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.
2.
3.
4.
5.
Importe os pacotes necessários.
Declare a classe como sendo derivada de JFrame.
a.
b.
c.
Declare os componentes como atributos da classe.
No método construtor: Crie (instancie) os componentes com o operador Adicione os componentes na frame.
new
.
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
BorderLayout BorderLayout
( ) ( int hgap, int vgap ) Alguns Campos CENTER “Center” EAST “East” NORTH “North” SOUTH WEST “South” “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
FlowLayout FlowLayout FlowLayout
( ) ( int alinhamento ) (int alinhamento, int hgap, int vgap ) Alguns Campos (alinhamento) 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 GridLayout
( ) ( int rows, int cols ) (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
(java.awt.GridBagLayout)
Construtor
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
JFileChooser
JPanel
JColorChooser JEditorPane
JOptionPane
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
frame.
(definido em WindowConstants): Automaticamente esconde a
DISPOSE_ON_CLOSE
(definido em WindowConstants): Automaticamente esconde e elimina a frame.
EXIT_ON_CLOSE
System.exit(). (definido em JFrame): Encerra a aplicação usando o método 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
JTextField
JTextArea
JButton
JToggleButton
JCheckbox
ButtonGroup
JRadioButton
JList
JComboBox
32
JComponent
( javax.swing.JComponent )
Construtor
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
Define o alinhamento horizontal.
( int alinhamento ) 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
Define o alinhamento vertical.
( int alinhamento ) 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 Fatorial Primo 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
Seleciona um elemento.
( int índice ) 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
(javax.swing.DefaultListModel) Construtor 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
(javax.swing.JTable) Alguns Construtores 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.*; 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; }
Classe que Implementa os métodos obrigatórios de AbstractTableModel 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 Color
( float r, float g, float b ) ( float r, float g, float b, float a )
Color Color
( int r, int g, int b ) ( int r, int g, int b, int a )
Valores entre 0.0f e 1.0f
Valores entre 0 e 255
Color Color
( int rgb ) ( 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 0, 0, 0 gray 128, 128, 128 orange 255, 200, 0 yellow 255, 255, 0 blue 0, 0, 255 green 0, 255, 0 pink 255, 175, 175 cyan 0, 255, 255 lightGray 192, 192, 192 red 255, 0, 0 darkGray 64, 64, 64 magenta 255, 0, 255 white 255, 255, 255 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
( )
Não possui métodos set
int
getRGB
( ) 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
(java.awt.Font)
Nomes Lógicos de Fontes
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.*; class Fontes extends Frame { public Fontes(){ setTitle("Tipos de Fontes"); List lst = new List(); lst.setBackground(Color.lightGray); String fontfamily[] =
Classe para obter as fontes instaladas no computador local
add(lst); pack();
GraphicsEnvironment.
getLocalGraphicsEnvironment().
getAvailableFontFamilyNames();
for (int x=0; x< fontfamily.length; x++) lst.add(fontfamily[x]); 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
evt ) { (
ActionEvent
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
evt ) {
Object
source = (
ActionEvent 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.*; import javax.swing.*; public class FechaFrame extends JFrame { } public FechaFrame ( ) { setTitle ( "Oi Tudo Bem" ); setSize (300, 200);
setDefaultCloseOperation addWindowListener
(JFrame.
( new
WindowAdapter
public void
windowClosing
(
DO_NOTHING_ON_CLOSE WindowEvent
if ( resp == JOptionPane.YES_OPTION ) System.exit ( 0 ); } } ); setVisible ( true ); } public static void main ( String args [ ] ) { new FechaFrame( ); }
Fechamento de Janela
( ) { e ) { ); int resp = JOptionPane.showConfirmDialog(null, "Deseja sair ?");
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
public void ( new
MouseAdapter mouseEntered
btn.setBackground ( Color.yellow ); ( ) { ( MouseEvent evt ) { } 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]; }
catch
} else { Frame f = null; f.setSize(200, 300); } (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.
addImage
mt = new (img, 0);
MediaTracker
(this); 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
(exemplo 2)
import java.awt.*; import java.io.File; 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); try { // Carrega a imagem 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
(javax.swing.JMenuBar) JMenuBar
Menus
(javax.swing.JMenu) JMenu
Itens de Menus
(javax.swing.JMenuItem) JMenuItem
Separadores
addSeparator ( )
Adição da Barra de Menus à Frame
JFrame.setJMenuBar ( )
129
Menus
Abilitar e Desabilitar Itens de Menus
setEnable
( )
Ícones em Itens de Menus
setIcon
( ) JMenuItem item = new
JMenuItem
("Cut", new ImageIcon ( "cut.gif" );
Mnemônicos em Itens de Menus
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 ); editMenu.add ( item2 ); barraMenu.add ( editMenu ); setJMenuBar ( barraMenu ); show( );
Importar: java.awt.* java.awt.event.* javax.swing.*
} 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