COMPONENTES GUI
This presentation is the property of its rightful owner.
Sponsored Links
1 / 158

COMPONENTES GUI (capítulo 11 Deitel) PowerPoint PPT Presentation


  • 45 Views
  • Uploaded on
  • Presentation posted in: General

COMPONENTES GUI (capítulo 11 Deitel). Roberto Willrich INE-CTC-UFSC Carla Merkle Westphall INE-CTC-UFSC E-Mail: [email protected] URL: http://moodle.inf.ufsc.br INE5605-Turma 0238A. Objetivos. Neste cap í tulo aprenderemos:

Download Presentation

COMPONENTES GUI (capítulo 11 Deitel)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Componentes gui cap tulo 11 deitel

COMPONENTES GUI(capítulo 11 Deitel)

Roberto Willrich

INE-CTC-UFSC

Carla Merkle Westphall

INE-CTC-UFSC

E-Mail: [email protected]

URL: http://moodle.inf.ufsc.br

INE5605-Turma 0238A


Objetivos

Objetivos

Neste capítulo aprenderemos:

Construir interfaces gráficas e tratar eventos gerados pelas interações do usuário.

Entender os pacotes contendo componentes GUI, classes de tratamento de eventos e interfaces.

Criar e manipular botões, labels, listas, campos de texto e painéis.

Tratar eventos de manipulação do mouse e de teclado.

Usar o layout managers para organizar os componentes GUI

2


Introdu o

Introdução

Interfaces gráficas (GUI)

Oferecem um mecanismo amigável de interação com as aplicações

Normalmente contém barra de título, barra de menu contendo menus, botões e campos de texto

Construídos a partir de componentes GUI

3


Internet explorer com componentes gui

Internet Explorer com componentes GUI.

4

Botão

Menus

Barra de título

Barra de menus

Campo de texto

Barras de rolagem


Entrada sa da simples baseada em gui com joptionpane

Entrada/Saída Simples Baseada em GUI comJOptionPane

Caixas de diálogo

Usada pelas aplicações para interagir com o usuário

Oferecida pela classe Java JOptionPane

Contém diálogos de entrada e de mensagem

5


Resumo

Resumo

Adicao.java

(1 de 2)

6

Mostra caixa de entrada para receber o primeiro inteiro

Mostra caixa de entrada para receber o segundo inteiro

Mostra caixa de mensagem para apresentar a soma ao usuário


Caixa de dialogo caixa de mensagem

Caixa de Dialogo: Caixa de Mensagem

Classe JOptionPane

Método JOptionPane.showMessageDialog

Argumentos

Primeiro usado para posicionamento na tela

Null para colocar a caixa no centro da tela do frame default

Segundo é a String a apresentar

Terceiro é o titulo da janela

Quarto é o tipo de mensagem

7

// Imprime linhas na caixa de dialogo

import javax.swing.JOptionPane; // importa classe JOptionPane

public class Dialog2 {

public static void main( String args[] ) {

// apresenta um dialogo com a mensagem

JOptionPane.showMessageDialog( null, "Bem vindo\na\nJava" ,

"Titulo", JOptionPane.INFORMATION_MESSAGE);

}

}


Componentes gui cap tulo 11 deitel

Adicao.java

(2 de 2)

8

Caixas de diálogos apresentadas pelas linhas 10–11

Prompt para o usuário

Campo de texto em que o usuário digita um valor

Quando o usuário clica em OK,

showInputDialogretorna para o programa o 2 digitado pelo usuário como uma String. O programa deve converter o String para um int

Caixa de entrada apresentada pelas linhas 12–13

Barra de titulo

Caixa de mensagem apresentada pelas linhas 22–23

Quando o usuário clica em OK, a caixa de mensagem desaparece


Constantes static joptionpane para caixas de dialogo

Constantes staticJOptionPane para caixas de dialogo.

9


Vis o geral dos componentes swing

Visão Geral dos Componentes Swing

Componentes GUI Swing

Declarados no pacote javax.swing

Muitos deles são componentes Java puros

Parte das Java Foundation Classes (JFC)

É um framework gráfico para construir interfaces gráficas (GUIs) portáveis baseadas em Java. JFC consiste do AWT (Abstract Window Toolkit), Swing e Java 2D. Juntos, eles oferecem uma interface gráfica para programas em Java que rodam em plataformas populares como Microsoft Windows, Linux, e Mac OSX.

10


Alguns componentes gr ficos b sicos

Alguns componentes gráficos básicos.

11


Swing vs awt

Swing vs. AWT

Abstract Window Toolkit (AWT)

Precursor do Swing

Declarado no pacote java.awt

Não oferece uma apresentação multi-plataforma consistente

12


T pico de portabilidade

Tópico de portabilidade

Componentes Swing são implementados em Java, assim elas são mais portáveis e flexíveis que os componentes GUI Java do pacote java.awt, que foram baseadas nos componentes GUI da plataforma de base. Por esta razão, componentes Swing são geralmente preferidos.

13


Componentes gui leves vs pesados

Componentes GUI Leves vs. Pesados

Componentes leves

Não depende diretamente de componentes GUI suportados pela plataforma de base

Componentes pesados

Dependentes diretamente da plataforma local (S.O.)

Componentes AWT

Alguns componentes Swing

14


Observa o

Observação

A forma de apresentação da interface definida por componentes GUI pesados a partir do pacote java.awtvaria de acordo com a plataforma. Como componentes pesados são ligados a GUI da plataforma local, a forma de apresentação varia de plataforma para plataforma.

15


Superclasses dos componentes gui leves do swing

Superclasses dos componentes GUI leves do Swing

Classe Component (pacote java.awt)

Subclasse de Object

Declara muitos comportamentos e atributos comuns aos componentes GUI

Classe Container (pacote java.awt)

Subclasse de Component

Organiza Components

Classe JComponent (pacote javax.swing)

Subclasse de Container

Superclasse de todos os componentes Swing leves

16


Apresenta o de textos e imagens em uma janela

Apresentação de Textos e Imagens em uma Janela

Classe JFrame

Muitas janelas são instancias ou subclasse desta classe

Oferece uma barra de título

Oferece botões para minimizar, maximizar ou fechar a aplicação

17


Nomeando componentes gui

Nomeando componentes GUI

Label

Instruções ou informações textuais indicando o propósito de cada componentes

Criado com a classe JLabel

18


Especificando o layout

Especificando o Layout

Containers de layout (Layout Containers)

Determina onde os componentes são colocados no container

Feito em Java com gerenciadores de layout (layout managers)

Uma destas classes é FlowLayout

Configurado com o método setLayout da classe JFrame

19


Resumo1

Resumo

LabelFrame.java

(1 de 2)

20


Resumo2

Resumo

LabelFrame.java

(2 de 2)

21


Resumo3

Resumo

TesteLabel.java

22


Criando e anexando label1

Criando e anexando label1

Construtor tendo como argumento o texto

Método setToolTipText da classe JComponent

Especifica o texto de ajuda (tool tip)

Método add da classe Container

Adiciona um componente em um container

23

label1 = new JLabel( "Label com texto" );

label1.setToolTipText( "Este é o label1" );

add( label1 ); // adiciona label1 ao JFrame


Observa o1

Observação

Use tool tips para adicionar um texto descritivo nos seus componentes gráficos. Este texto ajuda o usuário na determinação dos objetivos dos componentes da interface.

24


Erro comum de programa o

Erro comum de programação

Se você esquece de adicionar um componente no container, este componente não será apresentado quando o container aparecer na tela.

25


Criando e anexando label2

Criando e Anexando label2

Texto, ícone e posicionamento são passados no construtor de JLabel

Interface Icon:

Pequena imagem de tamanho fixo

IconImage é uma implementação da interface Icon que apresenta ícones a partir de Images

Images são criadas a partir de URL, nome do arquivo ou array de bytes pré-carregados com MediaTracker

No exemplo é passado o URL (getClass().getRessource())

26

Icon bug = new ImageIcon( getClass().getResource( "bug1.gif" ) );

label2 = new JLabel( "Label com texto e icone", bug,

SwingConstants.LEFT );

label2.setToolTipText( "Este é label2" );

add( label2 ); // adiciona label2 ao JFrame


Criando e anexando label3

Criando e Anexando label3

Construtor default e uso de métodos JLabel

getText e setText

Para definir e recuperar o texto de um label

getIcon e setIcon

Para definir e recuperar o ícone apresentado no label

getHorizontalTextPosition e setHorizontalTextPosition

Para definir e recuperar a posição horizontal do texto apresentado no label

27

label3 = new JLabel(); // construtor JLabel sem argumentos

label3.setText( "Label com icone e texto no botão " );

label3.setIcon( bug ); // adiciona icone ao JLabel

label3.setHorizontalTextPosition( SwingConstants.CENTER );

label3.setVerticalTextPosition( SwingConstants.BOTTOM );

label3.setToolTipText( "Este é label3" );

add( label3 ); // adiciona label3 ao JFrame


Criando e anexando label21

Criando e Anexando label2

Interface SwingConstants

Declara um conjunto de constantes inteiras comuns tal como aquela usada para definir o alinhamento dos componentes

Pode ser usada com métodos setHorizontalAlignment e setVerticalAlignment

28


Alguns componentes gui b sicos

Alguns componentes GUI básicos

29


Criando e apresentando a janela labelframe

Criando e Apresentando a janela LabelFrame

Outros métodos JFrame

setDefaultCloseOperation

Indica como a aplicação reage quando o usuário clica no botão fechar

setSize

Especifica a altura e largura da janela

setVisible

Determina se a janela é apresentada (true) ou não (false)

30

public static void main( String args[] )

{

LabelFrame labelFrame = new LabelFrame(); // cria LabelFrame

labelFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

labelFrame.setSize( 275, 180 ); // define tamanho do frame

labelFrame.setVisible( true ); // apresenta frame

} // fim do main


Campos de texto e uma introdu o a tratamento de eventos com classes aninhadas

Campos de texto e uma introdução a tratamento de eventos com classes aninhadas

GUIs são orientadas a eventos

Uma interação do usuário cria um evento

Eventos comuns são clicar um botão, digitar em um campo de texto, selecionar um item em um menu, fechar uma janela, mover o mouse, etc.

O evento causa uma chamada a um método chamado de tratador de eventos (event handler)

31


Campos de texto e uma introdu o a tratamento de eventos com classes aninhadas1

Campos de texto e uma introdução a tratamento de eventos com classes aninhadas

Classe JTextComponent

Superclasse de JTextField

Superclasse de JPasswordField

Adiciona o caractere echo para esconder a entrada de texto no componente

32


Resumo4

Resumo

FrameCampoDeTexto.java

(1 de 3)

33

Cria um novo JTextField


Resumo5

Resumo

FrameCampoDeTexto.java

(2 de 3)

34

Cria um novo JTextField

Cria um novo JPasswordField

Criar tratador de evento

Registra tratador de evento

Cria um novo JTextField não editável

Cria uma classe tratador de evento pela implementação da interface ActionListener

Declara método actionPerformed


Outline

Outline

FrameCampoDeTexto.java

(3 de 3)

35

Testa se a fonte do evento é o primeiro campo de texto

Testa se a fonte do evento é o segundo campo de texto

Testa se a fonte do evento é o terceiro campo de texto

Testa se a fonte do evento é o campo password

Obtém texto do campo de texto

Obtém texto do campo de texto

Obtém texto do campo de texto

Obtém password do campo password


Outline1

Outline

TesteCampoDeTexto.java

(1 de 2)

36


Resumo6

Resumo

TesteCampoDeTexto.java

(2 de 2)

37


Passos necess rios para configurar um tratador de eventos para um componente gr fico

Passos necessários para configurar um tratador de eventos para um componente gráfico

Vários passos são necessários para uma aplicação responder eventos

Criar uma classe para um tratador de evento

Implementa uma interface event-listener apropriada

Registrar o tratador de eventos

38

TratadorCampoDeTexto tratador = new TratadorCampoDeTexto();

campoDeTexto1.addActionListener( tratador );

//...

private class TratadorCampoDeTexto implements ActionListener

{

// processa eventos no campo de texto

public void actionPerformed( ActionEvent event )

{

//...

}

}


Usando uma classe aninhada para implementar um tratador de eventos

Usando uma classe aninhada para implementar um tratador de eventos

Classe de alto-nível (classe externa)

Não declarada dentro de outra classe

Classes aninhada

Declarada dentro de outra classe

Classes aninhadas não-static são chamadas classes internas

Com freqüência usadas para tratamento de eventos

39

public class FrameCampoDeTexto extends JFrame

{

//...

private class TratadorCampoDeTexto implements ActionListener

{

//...

}

}


Observa o2

Observação

Um classe interna pode acessar diretamente os atributos e métodos da classe externa, mesmo se eles são private.

40


Usando uma classe aninhada para implementar um tratador de eventos1

Usando uma classe aninhada para implementar um tratador de eventos

JTextFields e JPasswordFields

Digitando “enter” dentro destes campos causa um ActionEvent

Processado pelos objetos que implementam a interface ActionListener

41


Registrando o tratador de eventos para cada campo de texto

Registrando o tratador de eventos para cada campo de texto

Registrando um tratador de evento

Chamando método addActionListener para registrar um objeto ActionListener

ActionListener observa eventos no objeto

42

TratadorCampoDeTexto tratador = new TratadorCampoDeTexto();

campoDeTexto1.addActionListener( tratador );


Erro comum de programa o1

Erro comum de programação

Esquecer de registrar um objeto tratador de evento para tratar um evento particular de componente gráfico faz com que os eventos sejam ignorados.

43


Detalhes do m todo actionperformed da classe tratadorcampodetexto

Detalhes do método actionPerformed da classe TratadorCampoDeTexto

Fonte do evento

Componente na qual o evento foi originado

Pode ser determinada usando o método getSource

Texto de um JTextField pode ser obtido usando getActionCommand

Texto de um JPasswordField pode ser obtido usando getPassword (retorna um char[])

44

private class TratadorCampoDeTexto implements ActionListener

{

// processa eventos no campo de texto

public void actionPerformed( ActionEvent event )

{

String string = ""; // declara string a apresentar

// usuario clicou Enter no JTextField campoDeTexto1

if ( event.getSource() == campoDeTexto1 )

string = String.format( "campoDeTexto1: %s",

event.getActionCommand() );


Tipos de eventos gr ficos comuns e interfaces listener

Tipos de eventos gráficos comuns e interfaces Listener

Tipos de eventos

Todos são subclasses de AWTEvent

Alguns declarados no pacote java.awt.event

Aqueles específicos dos componentes Swing são declarados em javax.swing.event

Modelo de evento de delegação:

A origem do evento é o componente com o qual o usuário interage.

O objeto do evento é criado e contém as informações sobre o evento que aconteceu.

O ouvinte de evento é notificado quando um evento acontece.

45


Algumas classes de evento do pacote java awt event

Algumas classes de evento do pacote java.awt.event.

46


Algumas interfaces comuns do pacote java awt event

Algumas interfaces comuns do pacote java.awt.event.

47


Invoca o do tratamento de evento

Invocação do tratamento de evento

Eventos são notificados para apenas um tratador de evento que casa com o tipo de evento

Eventos tem um único event ID especificando o tipo de evento

ActionEvents são manipulados pelos ActionListeners

MouseEvents são manipulados pelos MouseListeners e MouseMotionsListeners

KeyEvents são manipulados por KeyListeners

48


Componentes gui cap tulo 11 deitel

Tratamento de evento

  • Perguntas remanescentes:

    • Como o handler de evento ficou registrado?

    • Como o componente GUI sabe chamar actionPerformed em vez de algum outro método de tratamento de evento?

  • Cada JComponent tem uma variável de instância listenerList:

    • Objeto do tipo EventListenerList.

    • Mantém referências a todos os seus ouvintes registrados.


Componentes gui cap tulo 11 deitel

Registro de evento para JTextField textField1


Jbutton

JButton

Botão

Componente que o usuário clica para lançar uma ação específica

Pode ser botões de comando, caixas de marcação (check box), botões de alternância e botões de opção

Tipos de botões são subclasses de AbstractButton

51


Hierarquia do bot o swing

Hierarquia do Botão Swing.

52


Jbutton1

JButton

Botões de comando

Criado com a classe JButton

Texto na face do botão é chamado de rótulo (label) do botão

Gera um ActionEvent quando ele é clicado

53


Resumo7

Resumo

FrameBotao.java

(1 de 2)

54

Declara dois atributos JButton

Cria novo JButton

Cria dois ImageIcons

Cria novo JButton

Define rollover icon para JButton


Resumo8

Resumo

FrameBotao.java

(2 de 2)

55

Cria tratador para botões

Registra tratador de eventos

Classe interna implementa ActionListener

Acesso a atributo da classe externa usando a referência this

Obtém texto do JButton clicado


Resumo9

Resumo

TesteBotao.java

(1 de 1)

56


Jbutton2

JButton

JButtons pode ter um ícone de alternância (rollover icon)

Aparece quando o mouse é posicionado sobre o botão

Adicionado ao JButton com o método setRolloverIcon

57

Icon bug1 = new ImageIcon( getClass().getResource( "bug1.gif" ) );

Icon bug2 = new ImageIcon( getClass().getResource( "bug2.gif" ) );

fancyJButton = new JButton( "Fancy Button", bug1 ); // set image

fancyJButton.setRolloverIcon( bug2 ); // set rollover image

add( fancyJButton ); // adiciona fancyJButton ao JFrame


Observa o3

Observação

Quando usado na classe interna, a palavra-chave this referencia o objeto da classe interna atualmente sendo manipulado. Um método da classe interna pode acessar o objeto da classe externa precedendo o this do nome da classe externa e um ponto, como em FrameBotao.this.

58


Bot es que mant m um estado

Botões que mantém um estado

Botões com estado

Swing contém três tipos de botões com estado

JToggleButton, JCheckBox and JRadioButton

JCheckBox e JRadioButton são subclasses de JToggleButton

59


Jcheckbox

JCheckBox

JCheckBox

Contém um rótulo que aparece na direita do check box por default

Gera um ItemEvent quando este é clicado

ItemEvents são tratados por ItemListener

Passado para o método itemStateChanged

Método isSelected retorna se o check box é selecionado (true) ou não (false)

60


Outline2

Outline

CheckBoxFrame.java

(1 de 3)

61

Declara dois atributos JCheckBox

Define fonte do campo de texto


Outline3

Outline

CheckBoxFrame.java

(2 de 3)

62

Cria dois JCheckBoxes

Cria event handler

Registra event handler nos JCheckBoxes

Classe interna implementando ItemListener

MétodoitemStateChanged é chamado quando um JCheckBox é clicado

Testa se JCheckBox é selecionado


Outline4

Outline

CheckBoxFrame.java

(3 de 3)

63

MétodoisSelected retorna se JCheckBox está selecionado

Testa fonte do evento


Outline5

Outline

CheckBoxTest.java

64


Jradiobutton

JRadioButton

JRadioButton

Tem dois estados – selecionado e não-selecionado

Normalmente aparece no grupo na qual apenas um botão pode ser selecionado por vez

Grupo mantido por um objeto ButtonGroup

Declara método add para adicionar um JRadioButton ao grupo

Usualmente representa opções múltiplas exclusivas

65


Erro de programa o comum

Erro de programação comum

Adicionar um objeto ButtonGroup (ou um objeto de qualquer classe que não seja derivado de Component) ao container resulta em um erro de compilação.

66


Outline6

Outline

RadioButtonFrame.java

(1 de 3)

67

Declara quatro JRadioButtons e um ButtonGroup para gerenciar eles


Outline7

Outline

RadioButtonFrame.java

(2 de 3)

68

Cria quatro JRadioButtons

Cria o ButtonGroup

Adiciona cada JRadioButton ao ButtonGroup


Outline8

Outline

RadioButtonFrame.java

(3 of 3)

69

Quando radio button é selecionado, a fonte do campo de texto será alterada para o valor passa text field’s font will be set to the value passed to the constructor

Registra um event handler a cada JRadioButton

Classe interna Event handler implementa ItemListener


Outline9

Outline

RadioButtonTest.java

70


Jcombobox e o uso de classe interna an nima para tratamento de eventos

JComboBox e o uso de classe interna anônima para tratamento de eventos

Combo box

Implementada pela classe JComboBox

Cada item na lista tem um índice

setMaximumRowCount define o número máximo de linhas mostrada por vez

JComboBox oferece uma barra de rolagem e setas cima e baixo para se navegar na lista

71


Usando uma classe interna an nima para tratamento de eventos

Usando uma classe interna anônima para tratamento de eventos

Classe interna anônima

Forma especial de classe interna

Declarada sem um nome

Normalmente aparece dentro de um método

Tem um acesso limitado às variáveis locais

72


Outline10

Outline

ComboBoxFrame.java

(1 of 2)

73

Declara um atributo JComboBox


Outline11

Outline

ComboBoxFrame.java

(2 of 2)

74

Cria JComboBox e define número máximo de linhas

Cria classe interna anônima como event handler

Declara método itemStateChanged

Testa alteração de estado do JComboBox

Método getSelectedIndex localiza item selecionado


Outline12

Outline

ComboBoxTest.java

75

Barra de rolagem para visualizar itens na lista

Setas de rolagem

Caixa de rolagem


Observa o4

Observação

Uma classe interna anônima declarada em um método pode acessar atributos e métodos do objeto da classe externa que declara ela, tão bem quanto variáveis locais final do método, mas não podem acessar variáveis não-final do método.

76


Jlist

JList

Lista

Apresenta uma série de itens na qual pode-se selecionar um ou mais itens

Implementada pela classe JList

Permite uma lista de seleção simples ou múltipla

Um ListSelectionEvent ocorre quando um item é selecionado

Tratado por um ListSelectionListener e passado ao método valueChanged

77


Outline13

Outline

ListFrame.java

(1 of 2)

78

Declara um atributo JList


Outline14

Outline

ListFrame.java

(2 de 2)

79

Cria JList

Define modo de seleção do JList

Obtém índice do item selecionado

Adiciona JList ao ScrollPane e o adiciona à aplicação


Outline15

Outline

ListTest.java

80


Lista de sele o m ltipla

Lista de seleção múltipla

Lista de seleção múltipla

Permite aos usuários selecionarem vários itens

Seleção de intervalo simples permite apenas um faixa contínua de itens

Seleção de intervalo múltiplos permite que qualquer conjunto seja selecionado

81


Outline16

Outline

MultipleSelectionFrame.java

(1 de 3)

82


Outline17

Outline

MultipleSelectionFrame.java

(2 de 3)

83

Usa uma lista de seleção de intervalo múltiplo

Usa método setListData e getSelectedValues para copiar de uma JList para a outra


Outline18

Outline

MultipleSelectionFrame.java

(3 de 3)

84

Define largura

Define altura

Define modo de seleção para seleção de intervalo simples


Outline19

Outline

MultipleSelectionTest.java

85


Tratamento de evento de mouse

Tratamento de evento de mouse

  • Eventos de mouse:

    • Cria um objeto MouseEvent.

    • Tratado por MouseListeners e MouseMotionListeners.

    • MouseInputListener combina as duas interfaces.

    • A interface MouseWheelListener declara o método mouseWheelMoved para tratar MouseWheelEvents.


M todos de interface mouselistener e mousemotionlistener parte 1 de 2

Métodos de interface MouseListener e MouseMotionListener.(Parte 1 de 2.)‏


M todos de interface mouselistener e mousemotionlistener parte 2 de 2

Métodos de interface MouseListener e MouseMotionListener.(Parte 2 de 2.)‏


Resumo10

Cria JLabel e o adiciona à aplicação

Resumo

  • MouseTrackerFrame.java

    (1 de 4)‏

Cria JPanel para capturar eventos de mouse

Configura o fundo como branco


Resumo11

Cria handler de evento para eventos de mouse

Registra um handler de evento

Implementa interfaces ouvintes de mouse

Declara o método mouseClicked

Determina a localização do clique de mouse

Declara o método mousePressed

Declara o método mouseReleased

Resumo

  • MouseTrackerFrame.java

    (2 de 4)‏


Resumo12

Declara o método mouseEntered

Configura o segundo plano de JPanel

Declara o método mouseExited

Configura o segundo plano de JPanel

Resumo

  • MouseTrackerFrame.java

    (3 de 4)‏


Resumo13

Declara o método mouseDragged

Declara o método mouseMoved

Resumo

  • MouseTrackerFrame.java

    (4 de 4)‏


Resumo14

Resumo

  • MouseTrackerFrame.java

    (1 de 2)‏


Classes adaptadoras

Classes adaptadoras

  • Classe adaptadora:

    • Implementa interface ouvinte de evento.

    • Fornece implementação-padrão (corpo do método vazio) para todos os métodos de tratamento de eventos.


Observa o de engenharia de software

Observação de engenharia de software

  • Quando uma classe implementa uma interface, a classe tem um relacionamento ‘é um’ com essa interface.Todas as subclasses diretas e indiretas dessa classe herdam essa interface.Portanto, um objeto de uma classe que estende uma classe adaptadora de evento é um objeto do tipo ouvinte de eventos correspondente (por exemplo, um objeto de uma subclasse de MouseAdapter é um MouseListener).


Herdando mouseadapter

Herdando MouseAdapter

  • MouseAdapter:

    • Classe adaptadora para as interfaces MouseListener e MouseMotionListener.

    • Estender a classe permite sobrescrever somente os métodos que você deseja utilizar.


Erro comum de programa o2

Erro comum de programação

  • Se você estender uma classe adaptadora e digitar incorretamente o nome do método que você está sobrescrevendo, o método simplesmente torna-se outro método na classe.Esse é um erro de lógica difícil de ser detectado, visto que o programa chamará a versão vazia do método herdado da classe adaptadora.


Classes adaptadoras de evento e as interfaces que elas implementam no pacote java awt event

Classes adaptadoras de evento e as interfaces que elas implementam no pacote java.awt.event.


Resumo15

Registra um handler de evento

Resumo

  • MouseDetailsFrame.java

    (1 de 2)‏


Resumo16

Obtém o número de vezes que o botão do mouse foi clicado

Testa se o botão direito do mouse foi clicado

Testa se o botão do meio do mouse foi clicado

Resumo

  • MouseDetailsFrame.java

    (2 de 2)‏


Resumo17

Resumo

  • MouseDetails.java

    (1 de 2)‏


Componentes gui cap tulo 11 deitel

Tabela de Tratamento de Eventos


Componentes gui cap tulo 11 deitel

Tabela de Tratamento de Eventos


Gerenciadores de layout

Gerenciadores de Layout

Gerenciadores de Layout

É oferecida uma forma básica de organização dos componentes gráficos no container

Implementam a interface LayoutManager

104


Observa o5

Observação

Muitos ambientes de programação oferecem ferramentas de projeto de interfaces que ajudam o programador a graficamente definir sua interface; a ferramenta de projeto em seguida escreve o código java que implementa a interface. Tais ferramentas com freqüência oferecem um controle maior quanto ao tamanho, posição e alinhamento dos componentes gráficos que os gerenciadores de layout básicos.

105


Alguns gerenciadores de layout

Alguns Gerenciadores de Layout.

106


Flowlayout

FlowLayout

FlowLayout

Gerenciador de layout mais simples

Componentes são colocados da esquerda para a direita na ordem em que são adicionados

Componentes podem ser alinhados a esquerda, centrado ou a direita

107


Outline20

Outline

FlowLayoutFrame.java

(1 de 3)

108

Cria FlowLayout

Define layout da aplicação


Outline21

Outline

FlowLayoutFrame.java

(2 of 3)

109

Adiciona JButton; FlowLayout tratará posicionametno

Adiciona JButton; FlowLayout tratará o posicionamento

Define alinhamento a esquerda

Ajusta layout

Define alinhamento ao centro


Outline22

Outline

FlowLayoutFrame.java

(3 de 3)

110

Adiciona JButton; FlowLayout tratará posicionamento

Define alinhamento a direita

Reajusta alinhamento

Reajusta alinhamento


Outline23

Outline

FlowLayoutDemo.java

111


Borderlayout

BorderLayout

BorderLayout

Organiza componentes em cinco regiões – north, south, east, west e center

Implementa a interface LayoutManager2

Fornece espaçamento horizontal e vertical

112


Observa o6

Observação

Se nenhuma região é especificada durante a adição de um Component ao BorderLayout, o gerenciador posicionará este componente na região BorderLayout.CENTER.

113


Observa o7

Observação

Cada container pode ter apenas um gerenciador de layout. Containers separados na mesma aplicação podem usar diferentes gerenciadores de layout.

114


Erro de programa o comum1

Erro de programação comum

Quando mais de um componente é adicionado em uma região no BorderLayout, apenas o último componente adicionado a esta região será apresentado. Nenhum erro indicará este problema.

115


Outline24

Outline

BorderLayoutDemo.java

(1 de 2)

116

Espaço horizontal

Espaço vertical


Outline25

Outline

BorderLayoutDemo.java

(2 of 2)

117


Outline26

Outline

BorderLayoutFrame.java

(1 de 2)

118

Declara atributo BorderLayout

Cria BorderLayout

Define layout

Registra tratador de evento


Outline27

Outline

BorderLayoutFrame.java

(2 de 2)

119

Adiciona botões à aplicação usando constantes do gerenciador de layout

Atualiza layout

Torna os botões invisíveis

Torna os botões visíveis


Gridlayout

GridLayout

GridLayout

Organização na forma de uma grade (linhas e colunas)

Todo componente tem a mesma altura e largura

120


Outline28

Outline

GridLayoutDemo.java

121


Outline29

Outline

GridLayoutFrame.java

(1 de 2)

122

Configura layout

Declara dois atributos GridLayout

Cria GridLayout


Outline30

Outline

GridLayoutFrame.java

(2 de 2)

123

Usa segundo layout

Adiciona botões ao JFrame

Usa primeiro layout

Atualiza layout


Gridbaglayout

GridBagLayout

Gerenciador do Layout GridBagLayout

É o mais poderoso dos gerenciadores de layout

Semelhante a GridLayout

Mas permite que o tamanho de cada componente varie e que estes possam ser definidos em qualquer ordem.

Componentes podem ocupar múltiplas linhas e colunas

Gerenciador mais utilizado e também o mais complexo

Dado que os demais não têm os facilidades para elaboração de interfaces mais sofisticadas.

124


Gridbaglayout cont

GridBagLayout (Cont.)

Tela é dividida em linhas e colunas

representando as células que serão ocupadas pelos componentes;

125

0

1

2

3

0

1

2

3

4

5


Gridbaglayout cont1

GridBagLayout (Cont.)

  • Método importante da classe GridBagLayout

    • public void setConstraints(Component comp, GridBagConstraints constraints)

      • Define as características de apresentação (restrições) do component comp no layout.

126


Gridbaglayout cont2

GridBagLayout (Cont.)

Duas classes são importantes para definição do layout

GridBagConstraints

GridBagConstraints()

GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)

Insets

Ajustes extras

127


Gridbaglayout cont3

GridBagLayout (Cont.)

128


Gridbaglayout cont4

GridBagLayout (Cont.)

Um método útil para simplificar o entendimento

Sendo constraints = new GridBagConstraints();

129


Gridbaglayout cont5

GridBagLayout (Cont.)

Exemplo de construção da interface

private JLabel lblNome = new JLabel("Nome:");

private JLabel lblSobrenome = new JLabel("Sobrenome:");

private JLabel lblnumCarteiraTrabalho = new JLabel(“NCT:");

private JLabel lblSalario = new JLabel("Salario Mensal:");

//Campos de edição

private JTextField edtNome = new JTextField();

private JTextField edtSobrenome = new JTextField();

private JTextField edtnumCarteiraTrabalho = new JTextField();

private JTextField edtSalario = new JTextField();

private JButton btnConfirmar = new JButton("Confirmar");

private JButton btnCancelar = new JButton("Cancelar");

130


Gridbaglayout cont6

GridBagLayout (Cont.)

Exemplo de construção da interface

layout = new GridBagLayout();

setLayout(layout);

constraints = new GridBagConstraints();

constraints.fill = GridBagConstraints.BOTH;

constraints.insets = new Insets(10, 10, 0, 10);

addComponent(lblNome, 0, 0, 1, 1);

addComponent(edtNome, 0, 1, 3, 1);

addComponent(lblSobrenome, 1, 0, 1, 1);

addComponent(lblnumCarteiraTrabalho, 2, 0, 1, 1);

addComponent(lblSalario, 3, 0, 1, 1);

addComponent(edtSobrenome, 1, 1, 3, 1);

addComponent(edtnumCarteiraTrabalho, 2, 1, 3, 1);

addComponent(edtSalario, 3, 1, 3, 1);

addComponent(btnConfirmar, 4, 2, 1, 1);

addComponent(btnCancelar, 4, 3, 1, 1);

131


Gridbaglayout cont7

GridBagLayout (Cont.)

Insets(int top, int left, int bottom, int right)

132

top

left

right

bottom


Gridbaglayout cont8

GridBagLayout (Cont.)

Insets(int top, int left, int bottom, int right)

constraints.insets = new Insets(20, 12, 15, 25);

133

20

25

15

12


Usando panels para gerenciar layouts mais complexos

Usando Panels para gerenciar layouts mais complexos

Interfaces gráficas complexas com freqüência requerem vários painéis para organizar seus componentes de modo apropriado

134


Outline31

Outline

PanelFrame.java

(1 de 2)

135

Cria JPanel

Declara um JPanel para apresentar botões

Configura layout


Outline32

Outline

PanelFrame.java

(2 de 2)

136

Adiciona o painel de botões

Adiciona painel à aplicação


Outline33

Outline

PanelDemo.java

137


Usando menus com frames

Usando Menus com Frames

Menus

Permite ao usuário solicitar ações

Pode ser anexado apenas a objetos da classe que têm o método setMenuBar, tal como JFrame e JApplet

Classe MenuBar

Contém métodos necessários para gerenciar uma barra de menu

Classe JMenu

Contém os métodos necessário para gerenciar menus

Classe JMenuItem

Contém os métodos necessários para gerenciar itens de menu

138


Usando menus com frames cont

Usando Menus com Frames (Cont.)

Classe JCheckBoxMenuItem

Contém os métodos necessários para gerenciar itens de menus que pode ser colocados como on ou off

Classe JRadioButtonMenuItem

Contém os métodos necessários para gerenciar itens de menu que podem ser on ou off como em JCheckBoxMenuItems

Quando vários JRadioButtonMenuItems são mantidos como parte de um ButtonGroup, apenas um item no grupo pode ser selecionado

Mnemônicos

Caracteres especiais que podem oferecer acesso rápido ao menu ou item do menu a partir do teclado

139


Outline34

Outline

MenuTest.java

(1 de 2)

140

Menu

Caracteres mnemônicos

Barra de menu


Outline35

Outline

MenuTest.java

(2 de 2)

141

Submenu

expandido

Menu items

Linha

separadora


Outline36

Outline

MenuFrame.java

(1 de 8)

142


Outline37

Outline

MenuFrame.java

(2 de 8)

143

Cria um JMenu

Chama método JMenusetMnemonic

Adiciona the JMenuItem “About…” ao fileMenu


Outline38

Outline

MenuFrame.java

(3 de 8)

Cria um ActionListener para processar eventos de ação em aboutItem

144

Apresenta uma caixa de mensagem de dialogo

Cria e adiciona o item de menu exitItem

Registra um ActionListener que encerra a aplicação


Outline39

Outline

MenuFrame.java

(4 de 8)

Adiciona fileMenu ao JMenuBar e anexa o JMenuBar à janela da aplicação

145

Cria menu formatMenu

cria submenu colorMenu

Cria array JRadioButtonMenuItemcolorItems

Cria um ButtonGroup para assegurar que apenas um dos itens de menu seja selecionado por vez

Adiciona JRadioButtonMenuItems ao colorMenu e registra ActionListeners


Outline40

Outline

MenuFrame.java

(5 de 8)

146

Chama métodoAbstractButtonsetSelected

Adiciona colorMenu ao formatMenu e adiciona uma linha de separação horizontal

Cria array de JRadioButtonMenuItemfonts

Cria um ButtonGroup para assegurar que apenas um dos itens do menu sejam selecionados por vez

Adiciona JRadioButtonMenuItems ao colorMenu e registra ActionListeners

Configura seleção default e adiciona separador horizontal


Outline41

Outline

MenuFrame.java

(6 de 8)

147

Cria JCheckBoxMenuItems

Adiciona fontMenu ao formatMenu e formatMenu ao JMenuBar


Outline42

Outline

MenuFrame.java

(7 de 8)

148

Determina o JRadioButtonMenuItem selecionado

MétodogetSource retorna uma referência ao JRadioButtonMenuItem que gerou o evento


Outline43

Outline

MenuFrame.java

(8 de 8)

149

Chamado se o usuário seleciona um JCheckBoxMenuItem em fontMenu

Determina se um ou os dois JCheckBoxMenuItems estão selecionados


Jtabbedpane

JTabbedPane

JTabbedPane

Organiza componentes gráficos em camadas em que apenas uma camada é visível por vez

Quando o usuário clica na guia, a camada apropriada é apresentada

As guias podem ser posicionados no topo (default), esquerda, direita ou embaixo

Qualquer componente pode ser colocado em uma guia

Se as guias não couberem em uma linha, eles serão colocados em linhas adicionais

150


Outline44

Outline

JTabbedPaneDemo.java

151


Outline45

Outline

JTabbedPaneFrame.java

(1 de 2)

152

Cria um JTabbedPane vazio com as configurações default

Chama método JTabbedPaneaddTab com argumentos que especificam o título da guia, uma referência a interface Icon para apresentar na guia, o COMPONENT a apresentar quando o usuário clica na guia e a string tooltip da guia


Outline46

Outline

JTabbedPaneFrame.java

(2 de 2)

153

Adiciona panel2 ao tabbedPane

Adiciona panel3 ao tabbedPane


Jmenu e cardlayout

JMenu e CardLayout

CardLayout

Gerenciador de layout que empilha os componentes de um container de tal forma que apenas o componente que está no topo permanece visível

Métodos de navegação first(), next(), previous()e last()

Permitem "navegar" entre os componentes empilhados

determinando qual item deve estar visível em um dado momento

permitem realizar uma varredura seqüencial pelos componentes de container especificado

154


Jmenu e cardlayout1

JMenu e CardLayout

CardLayout

Método show()

permite selecionar um componente para exposição diretamente através de uma string

String especificada como uma restrição quando da adição do componente ao container

155


Componentes gui cap tulo 11 deitel

CardLayoutTest.java

// Arquivo: JTabbedPaneDemo.java

// Demonstrando CardLayout.

importjavax.swing.JFrame;

publicclassCardLayoutTest

{

publicstaticvoidmain( String args[] )

{

CardLayoutDemocardLayoutDemo = newCardLayoutDemo();

cardLayoutDemo.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

cardLayoutDemo.setSize( 300, 200 ); // define tamanho do frame

cardLayoutDemo.setResizable(false);

cardLayoutDemo.setVisible( true ); // apresenta frame

} // fim do main

} // fim da classe JGridLayoutBagDemo

156


Componentes gui cap tulo 11 deitel

CardLayoutTest.java

// Arquivo CardLayoutDemo

// Demonstração do CardLayout

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassCardLayoutDemoextendsJFrameimplementsActionListener {

privateJPanelcards; //um JPanel que usa CardLayout

privateJMenu menu; //menu principal Panel

privateJMenuItembuttonItem; //item do menu Panel

privateJMenuItemtextItem; //item do menu Panel

privateJMenuBar bar; //barra de menu

// Constantes usadas para identificar os JPanels (as Cards)

final static String BUTTONPANEL = "CardwithJButtons";

final static String TEXTPANEL = "CardwithJTextField";

publicCardLayoutDemo () {

// Define o título do aplicativo

super("Demo de CardLayout");

// Cria Menu Panel

menu = newJMenu("Panel");

// Cria itens do menu Panel

buttonItem = newJMenuItem(BUTTONPANEL);

textItem = newJMenuItem(BUTTONPANEL);

menu.add(buttonItem);

menu.add(textItem);

// Associa tratador de eventos aos itens do menu

buttonItem.addActionListener(this);

textItem.addActionListener(this);

// Define a barra de menu com o menu Panel

bar = newJMenuBar();

bar.add(menu);

setJMenuBar( bar );

157


Componentes gui cap tulo 11 deitel

CardLayoutTest.java

// Cria card de botões

JPanel card1 = newJPanel();

card1.add(newJButton("Button 1"));

card1.add(newJButton("Button 2"));

card1.add(newJButton("Button 3"));

// Cria card com campo de texto

JPanel card2 = newJPanel();

card2.add(newJTextField("TextField", 20));

// Cria JPanel com layout CardLayout que conterá as cards

cards = newJPanel(newCardLayout());

cards.add(card1, BUTTONPANEL);

cards.add(card2, TEXTPANEL);

// adiciona cards ao JFrame

add(cards, BorderLayout.CENTER);

}

// Trata os eventos de seleção no menu Panel

publicvoidactionPerformed( ActionEventevent )

{

// Obtém o Layout CardLayout do JPanel

CardLayout cl = (CardLayout)(cards.getLayout());

// Apresenta o JPanel apropriado de acordo com a seleção no menu

if (event.getSource() == buttonItem)

cl.show(cards, BUTTONPANEL);

else

cl.show(cards, TEXTPANEL);

}

}

158


  • Login