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

Download Report

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