• Nenhum resultado encontrado

Linguagem de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Linguagem de Programação"

Copied!
113
0
0

Texto

(1)

Li n g u age m d e Pr o g ramação

Linguagem de Programação

GUI (Graphical User Interface)

Luciene Cristina Alves Rinaldi

Centro Universitário FIEO

(2)

Li n g u age m d e Pr o g ramação

Objetivo

Esta aula tem como objetivo apresentar os princípios de Interfaces gráficas com o

usuário, entender os pacotes que contêm componentes GUI, interfaces e classes de tratamento de evento.

2

(3)

Li n g u age m d e Pr o g ramação

Introdução

Graphical User Interface (GUI)

• Interface amigável ao usuário.

• Interação mais rápida e produtiva

3

(4)

Li n g u age m d e Pr o g ramação

Aparência das GUIs

Exemplo de Interface:

• Janela de navegador da Web do Internet Explorer com alguns de seus componentes GUI rotulados:

4

(5)

Li n g u age m d e Pr o g ramação

Definição

As GUIs são construídas a partir de componentes GUI.

Um componente GUI é um objeto em que o usuário interage via mouse, teclado ou

outros dispositivos de entrada.

5

(6)

Li n g u age m d e Pr o g ramação

AWT x Swing

São dois os componentes GUI do Java:

 AWT e o Swing.

 Ex. botões, barras de títulos das janelas, etc.

Antes do Swing ser introduzido no J2SE 1.2, as GUI eram construídos com componentes Abstract

Window Toolkit (AWT) do pacote java.awt;

O problema dos aplicativos AWT é que eles estão associados a plataforma local (para o qual foram desenvolvidos, por exemplo Windows, Linux).

O resultado disso é que são componentes pesados,

pois são desenvolvidos para diferentes estilos.

6

(7)

Li n g u age m d e Pr o g ramação

O AWT serviu de “base” para a construção do Swing (que ainda utiliza alguns de seus recursos).

No Swing sempre haverá alguma classe AWT, pois nem todos componentes e eventos foram re-

implementados.

As classes Swing utilizam o pacote javax.swing.

Uma forma de diferenciar classes Swing da AWT é pelo prefixo dos componentes (todas as classes Swing iniciam com a letra “J”).

O Swing permite o programador especificar a aparência e o comportamento para cada

plataforma ou uma forma uniforme que sirva para

todas as plataformas.

7

AWT x Swing (cont.)

(8)

Li n g u age m d e Pr o g ramação

Componentes Leves x Pesados

Os componentes Swing são considerados como de peso leve, pois são completamente escritos em Java.

Os componentes AWT (muitos dos quais são equivalentes aos Swing) são vinculados a plataforma local, por isso, são considerados componentes de peso pesado.

Os componentes AWT contam com o sistema de janela da plataforma local para determinar sua funcionalidade, aparência e comportamento.

8

(9)

Li n g u age m d e Pr o g ramação

A hierarquia de herança das classes define os atributos e comportamentos que são comuns para a maioria dos componentes.

Cada classe é exibida com o nome de seu pacote e nome da classe.

9

SubClasse dos componentes Swing

(10)

Li n g u age m d e Pr o g ramação Uma classe que herda a classe Component é um componente.

Por exemplo, a classe Container herda a classe

Component e a classe Component herda Object.

Portanto, um Container é um Component de Object, e Component é um Object.

10

SubClasse dos componentes Swing

(11)

Li n g u age m d e Pr o g ramação

A classe Component define os métodos que podem ser aplicados a um objeto de qualquer subclasse de Component (Ex. métodos paint e repaint).

As operações comuns para a maioria dos

componentes GUI (tanto Swing como AWT) estão localizadas na classe Component.

A grande parte da funcionalidade herdada por cada subclasse de Component é definida originalmente

na classe Component.

11

SubClasse dos componentes Swing

(12)

Li n g u age m d e Pr o g ramação

12

A classe Container é uma coleção de componentes relacionados.

Em aplicativos com JFrame e Applets, anexamos os componentes ao painel (um Container).

Essa classe define o conjunto de métodos que podem ser aplicados a um objeto de qualquer subclasse Container.

Exemplo de métodos da classe Container: add e setLayout (gerenciador de layout).

SubClasse dos componentes Swing

(13)

Li n g u age m d e Pr o g ramação

São utilizados para organizar os

componentes GUI em um Container com a finalidade de apresentação.

13

Gerenciamento de Layout

(14)

Li n g u age m d e Pr o g ramação

FlowLayout

14

Os componentes são colocados em um Container da esquerda para a direita na ordem em que são adicionados

(alinhamento: esquerda, centralizado (padrão) e a direita)

(15)

Li n g u age m d e Pr o g ramação

15

FlowLayout (cont.)

(16)

Li n g u age m d e Pr o g ramação

16

FlowLayout (cont.)

(17)

Li n g u age m d e Pr o g ramação

BorderLayout

17

Os componentes (layout padrão para o painel de conteúdo)

são organizados em cinco regiões: Norte, Sul, Leste Oeste e

Centro.

(18)

Li n g u age m d e Pr o g ramação

18

BorderLayout (cont.)

(19)

Li n g u age m d e Pr o g ramação

19

BorderLayout (cont.)

(20)

Li n g u age m d e Pr o g ramação

GridLayout

20

Os componentes são colocados nas linhas e colunas (o

Container é dividido em uma grade). Eles são adicionados a uma grade iniciando na parte superior esquerda e

prosseguindo da esquerda para a direita até o fim da linha.

(21)

Li n g u age m d e Pr o g ramação

21

GridLayout (cont.)

(22)

Li n g u age m d e Pr o g ramação

22

GridLayout (cont.)

(23)

Li n g u age m d e Pr o g ramação

JFrame

23

Janelas em uma interface gráfica são áreas que podem ser exibidas em qualquer área da tela.

A classe Jframe é responsável pela exibição de janelas para o

usuário.

(24)

Li n g u age m d e Pr o g ramação

24

JFrame (cont.)

(25)

Li n g u age m d e Pr o g ramação

Para utilizar as funções padrão foi adicionado o método setDefaultCloseOperation().

Ele pode receber como parâmetro as constantes da tabela abaixo.

A janela é exibida através do método show().

25

JFrame (cont.)

(26)

Li n g u age m d e Pr o g ramação

JLabel

26

Fornecem instruções de texto ou informações sobre uma GUI.

Ele exibe uma única linha de texto de leitura.

Observação: As imagens.gif devem ser colocadas no diretório:

\build\classes\lista11

(27)

Li n g u age m d e Pr o g ramação

27

JLabel (cont.)

(28)

Li n g u age m d e Pr o g ramação

JButton

28

É um componente em que o usuário clica para acionar uma ação específica.

Um programa Java pode utilizar vários tipos de botões,

incluindo botões de: comando, caixas de seleção, alternação e opção.

Observação: As imagens.gif devem ser colocadas no diretório:

\build\classes\lista11

(29)

Li n g u age m d e Pr o g ramação

29

JButton (cont.)

(30)

Li n g u age m d e Pr o g ramação

JTextField e JPasswordField

30

São áreas de uma única linha em que o texto pode ser inserido via teclado pelo usuário ou o texto pode ser exibido.

Um JPasswordField mostra o caractere digitado oculto, pois assume que eles representam uma senha que deve

permanecer desconhecida.

(31)

Li n g u age m d e Pr o g ramação

31

JTextField e JPasswordField (cont.)

(32)

Li n g u age m d e Pr o g ramação

32

JTextField e JPasswordField (cont.)

(33)

Li n g u age m d e Pr o g ramação

JTextArea

33

É destinado a exibir uma área para manipulação de múltiplas linhas de texto.

Para realizar a operação, a chamada ao método getText() da

primeira JTextArea copia todo o texto da primeira para a

segunda, enquanto o getSelectedText() copia apenas o

texto selecionado.

(34)

Li n g u age m d e Pr o g ramação

34

JTextArea (cont.)

(35)

Li n g u age m d e Pr o g ramação

35

JTextArea (cont.)

(36)

Li n g u age m d e Pr o g ramação

A tabela abaixo exibe algumas métodos úteis e sua função na classe JTextArea

36

JTextArea (cont.)

(37)

Li n g u age m d e Pr o g ramação

JPanel

37

Para interfaces mais complexas, cada componente deverá ser colocado em um local exato para que a aplicação fique com uma GUI interessante para o usuário.

Para essa localização exata, torna-se necessária a utilização de

“áreas” ou “grupos” de componentes, chamados de painéis (controlados pela classe JPanel).

Assim, um painel é um

agrupamento de componentes,

sendo que estes componentes

podem ser até mesmo outros

painéis.

(38)

Li n g u age m d e Pr o g ramação

38

JPanel (cont.)

(39)

Li n g u age m d e Pr o g ramação

JComboBox

Observação: As imagens.gif devem ser colocadas no diretório: 39

\build\classes\lista11

É uma caixa de combinação (ou combo box, às vezes também é chamado de lista dropdown) que fornece uma lista de

itens entre os quais o usuário pode escolher.

(40)

Li n g u age m d e Pr o g ramação

40

(41)

Li n g u age m d e Pr o g ramação

Barra de Menus (JMenuBar)

41

A classe JMenuBar tem por objetivo gerenciar uma barra de menus. Uma barra de menus é utilizada em aplicações, estando localizada abaixo do título da janela.

No Swing ela só pode ser associada a classes que possuam o método setMenuBar. As classes que mais utilizam menus são JFrame e JApplet.

JMenuItem

JMenu JMenuBar

(42)

Li n g u age m d e Pr o g ramação

42

Barra de Menus (JMenuBar) (cont.)

(43)

Li n g u age m d e Pr o g ramação

43

Barra de Menus (JMenuBar) (cont.)

(44)

Li n g u age m d e Pr o g ramação

JRadioButtonMenuItem

44

Um JRadioButtonMenuItem é a criação de um grupo de botões.

Esse grupo tem por função dizer quais são os itens que estão inclusos no radio para restringir que exista apenas um item selecionado do mesmo grupo.

A criação é feita através do objeto grupo, instanciado a partir

da classe ButtonGroup.

(45)

Li n g u age m d e Pr o g ramação

45

JRadioButtonMenuItem (cont.)

(46)

Li n g u age m d e Pr o g ramação

JCheckBoxMenuItem

46

Podemos utilizar itens check na construção de menus.

O programa abaixo funciona da mesma forma que o anterior,

tendo a única diferença a substituição dos itens JMenuItem

por JCheckBoxMenuItem.

(47)

Li n g u age m d e Pr o g ramação

47

JCheckBoxMenuItem (cont.)

(48)

Li n g u age m d e Pr o g ramação

JPopupMenu

48

É responsável pela exibição de pequenos menus (menus de

contexto) os quais são muito utilizados nas aplicações

atuais. No Swing são exibidos ao receberem um clique

disparado com o botão direito do mouse.

(49)

Li n g u age m d e Pr o g ramação

49

JPopupMenu (cont.)

(50)

Li n g u age m d e Pr o g ramação

50

JPopupMenu (cont.)

(51)

Li n g u age m d e Pr o g ramação

JOptionPane

51

Para construir caixas de diálogo, é utilizado a classe

JOptionPane (considerados modais). Para os não modais, deve ser utilizado a classe JDialog.

A classe JOPtionPane possui métodos para gerar os tipos de

diálogos mais comumente utilizados.

(52)

Li n g u age m d e Pr o g ramação

Tipos de diálogos de mensagem

 Qualquer diálogo criado com JOptionPane possui um conjunto de ícones padrões que

podem ser utilizados a fim de preservar o Look And Feel de cada plataforma

 Ícones customizados também podem ser adicionados quando necessário.

52

JOptionPane (cont.)

(53)

Li n g u age m d e Pr o g ramação

No primeiro exemplo é importante destacar os parâmetros para chamada do método estático showMessageDialog()

53

JOptionPane (cont.)

(54)

Li n g u age m d e Pr o g ramação

54

JOptionPane (cont.)

Para exibir uma caixa de diálogo com opções de confirmação

podemos utilizar o método showConfirmDialog()

(55)

Li n g u age m d e Pr o g ramação

55

JOptionPane (cont.)

(56)

Li n g u age m d e Pr o g ramação

56

JOptionPane (cont.)

Para exibir uma caixa de diálogo JOPtionPane personalizada esta disponível o método showOptionDialog().

Consulte a API do SDK para conhecer mais variações deste

método.

(57)

Li n g u age m d e Pr o g ramação

57

JOptionPane (cont.)

(58)

Li n g u age m d e Pr o g ramação

58

JOptionPane (cont.)

A chamada ao método showOptionDialog() possui sintaxe diferente das anteriores.

Pode ser realizada de 2 formas:

(1) É definido quais serão os botões a exibir através do parâmetro JOptionPane YES_NO_OPTION, utilizando um dos disponíveis na tabela abaixo;

(2) É como o programa utiliza os 2 últimos parâmetros deste

método informando no primeiro um vetor com o nome dos

botões e no segundo o nome do botão padrão.

(59)

Li n g u age m d e Pr o g ramação

59

Exemplo (JOptionPane)

prompt para o usuário

Caixa de diálogo exibida pela linha 9 Quando o usuário clica em

OK o showInputDialog retorna para o programa com o 5 digitado pelo usuário como String. O programa deve converter o String em int

barra de títulos

Quando o usuário clica em OK, o diálogo de mensagem é dispensado (removido da tela)

campo de texto em que o usuário digita o valor

(60)

Li n g u age m d e Pr o g ramação

60

Exemplo (JOptionPane) (cont.)

(61)

Li n g u age m d e Pr o g ramação

Botões:

OK:

• envia a String para o programa;

• Fecha (oculta) a caixa de diálogo;

Cancel:

• showInputDialog retorna null;

• Se o usuário digitar um valor não inteiro, ocorrerá um erro de lógica em tempo de execução:

– Tratamento de Exceções;

61

Exemplo (JOptionPane) (cont.)

(62)

Li n g u age m d e Pr o g ramação

1 argumento (null):

– Onde posicionar a caixa de diálogo;

– Null indica centro da tela;

2 argumento (“A soma dos dois números é ” + soma):

– Mensagem a exibir;

3 argumento (“Soma de dois números inteiros”):

– Título da janela;

4 argumento (JOptionPnane.PLAIN_MESSAGE):

– Tipo de diálogo de mensagem a ser exibido;

– Exibe um ícone à esquerda da mensagem; 62

Exemplo (JOptionPane) (cont.)

(63)

Li n g u age m d e Pr o g ramação

63

JTable

É utilizada para exibir tabelas de dados e caso necessário

permitir que o usuário manipule os dados

(64)

Li n g u age m d e Pr o g ramação

JTable (cont.)

64

(65)

Li n g u age m d e Pr o g ramação

65

JTable (cont.)

O programa declara uma matriz de Object[][] e inicializa com o conteúdo da JTable. É criado um vetor Object[][]

contendo os nomes das colunas.

Após a tabela montada, o programa define o JScrollPane, adiciona a tabela a ele e adiciona o JScrollPane ao layout.

O JScrollPane irá exibir o nome das colunas no cabeçalho e controlará os scrolls.

Para modificar a largura de uma coluna é necessário utilizar o seguinte código:

O método getColum() recebe como parâmetro um inteiro.

Este inteiro é o número da coluna ou a posição no vetor

(iniciando com zero) que possui o nome das colunas.

(66)

Li n g u age m d e Pr o g ramação

66

JTable (cont.)

Para utilizar o auto-redimensionamento, a classe JTable através do método setAutoResizeMode() permite que as colunas sejam redimensionadas automaticamente quando são manipuladas conforme exemplo abaixo:

O método setAutoResize() recebe como parâmetro uma

constante que é a propriedade que dita a forma pela qual

vai ser feito o redimensionamento. A tabela abaixo tem as

constantes disponíveis e suas funções.

(67)

Li n g u age m d e Pr o g ramação

JScrollPane

67

Fornece uma visão com scroll de um componente GUI.

É utilizado quando o tamanho de uma tela é menor que a quantidade de informações que se deseja mostrar.

É responsável pela exibição de barras de rolagem.

(68)

Li n g u age m d e Pr o g ramação

68

JScrollPane (cont.)

(69)

Li n g u age m d e Pr o g ramação

69

JScrollPane (cont.)

O JScrollPane permite que sejam criadas regras para exibição ou não das barras de rolagem.

Estas regras são definidas através de métodos que recebem

como parâmetros (constantes) indicados nas tabelas abaixo.

(70)

Li n g u age m d e Pr o g ramação

JFileChooser

70

Exibe uma GUI para navegar pelo sistema de arquivos para escolher arquivos ou diretórios (conhecida como janela para seleção de arquivos – Ex. Abrir, Salvar, ...).

O Look And Feel irá determinar o que será exibido de opções

nestas caixas de diálogo.

(71)

Li n g u age m d e Pr o g ramação

71

JFileChooser (cont.)

(72)

Li n g u age m d e Pr o g ramação

Para permitir que o usuário selecione apenas diretórios e não arquivos pode-se utilizar o método:

72

JFileChooser (cont.)

(73)

Li n g u age m d e Pr o g ramação

Look And Feel

73

Um programa que utiliza componentes GUI assume a

aparência e comportamento da plataforma (por exemplo, Windows, Macintosh ou Unix) em que ele é executado.

Isso pode ser desejável, uma vez que permite aos usuários em cada plataforma utilizar os componentes com o qual estão familiarizados.

Isso também introduz questões interessantes de portabilidade.

Os componentes GUI do Swing eliminam muitas dessas questões fornecendo funcionalidade uniforme de uma plataforma para outra definindo a aparência e

comportamento como Metal.

Mas, tem a flexibilidade para personalizar o estilo Windows

ou o Motif do Unix.

(74)

Li n g u age m d e Pr o g ramação

74

Look And Feel (cont.)

(75)

Li n g u age m d e Pr o g ramação

75

Look And Feel (cont.)

(76)

Li n g u age m d e Pr o g ramação

76

Look And Feel (cont.)

(77)

Li n g u age m d e Pr o g ramação

77

Look And Feel (cont.)

(78)

Li n g u age m d e Pr o g ramação

Tratamento de Eventos

Listeners

 Quando ocorre uma interação com o usuário, um evento é automaticamente enviado para o programa.

 Para processar um evento, deve-se realizar 2 tarefas:

(1) registrar um ouvinte (Listeners) e; (2) implementar um tratador (Handler).

 Um objeto ouvinte de eventos “ouve” tipos específicos de eventos gerados no mesmo objeto ou por outros objetos.

 Um tratador é um método que é automaticamente

chamado em resposta a um tipo de evento em particular.

 Cada interface ouvinte especifica um ou mais métodos de tratamento de eventos que devem ser definidos na

classe que implementa a interface ouvinte de eventos (pacote javax.swing.Event).

78

(79)

Li n g u age m d e Pr o g ramação

79

Listeners (cont.)

 Lembre-se que as interfaces definem métodos abstract.

 A classe que implementa uma interface deve definir

todos os métodos dessa classe, caso contrário, a classe é abstract e não pode ser utilizada para criar objetos.

 Quando ocorre um evento, o componente que o usuário interagiu notifica seus ouvintes registrando a chamada ao método de tratamento do evento apropriado.

 Exemplo: quando o usuário pressiona Enter em um JTextField, o método actionPerformed do ouvinte registrado é chamado.

 Exemplo de Eventos: ActionListener, MouseListener, WindowsListener, KeyListener, MouseMotionListener.

Tratamento de Eventos (cont.)

(80)

Li n g u age m d e Pr o g ramação

Implementando uma Interface

 Consiste na implementação de uma interface que tenham componentes que a “habilitem” tratar

determinados tipos de eventos.

 Isso pode ser feito pela própria classe onde os eventos são originados ou por outra classe.

 Os objetos criados terão a capacidade de responder a eventos.

80

Tratamento de Eventos (cont.)

(81)

Li n g u age m d e Pr o g ramação

81

Tratamento de Eventos (cont.)

(82)

Li n g u age m d e Pr o g ramação

82

Tratamento de Eventos (cont.)

Delegando o tratamento a outro objeto

 O programa possui uma classe com a GUI e uma outra

classe apenas para tratar os eventos desta.

(83)

Li n g u age m d e Pr o g ramação

83

Tratamento de Eventos (cont.)

(84)

Li n g u age m d e Pr o g ramação

84

Tratamento de Eventos (cont.)

Utilizando classes anônimas internas

 Este método é semelhante a delegar a outro objeto com a diferença de não possuir uma classe nomeada para

tratar o evento.

 Ou seja, o objeto é criado com uma instrução “new” no próprio método addActionListener.

 É a forma mais prática de implementar o tratamento de eventos, pois não existe a necessidade de 2 classes

nomeadas em arquivos separados.

(85)

Li n g u age m d e Pr o g ramação

85

Tratamento de Eventos (cont.)

(86)

Li n g u age m d e Pr o g ramação

86

(87)

Li n g u age m d e Pr o g ramação

87

Tratamento de Eventos (cont.)

Eventos de Mouse

 Podem ser capturados por qualquer componente GUI derivado de java.awt.Component.

 Cada um dos tratamentos aceita um objeto MouseEvent como seus argumentos.

 Um objeto MouseEvent contém as informações sobre o

evento de mouse que ocorreu, incluindo as coordenadas

x e y da localização onde o evento ocorreu.

(88)

Li n g u age m d e Pr o g ramação

88

 Os métodos de interfaces MouseListener e MouseMotionListener

são resumidos em:

(89)

Li n g u age m d e Pr o g ramação

89

Tratamento de Eventos (cont.)

(90)

Li n g u age m d e Pr o g ramação

90

Tratamento de Eventos (cont.)

(91)

Li n g u age m d e Pr o g ramação

91

Tratamento de Eventos (cont.)

(92)

Li n g u age m d e Pr o g ramação

Tratando Eventos do Teclado

92

Tratamento de Eventos (cont.)

(93)

Li n g u age m d e Pr o g ramação

Tratando Evento do Teclado (cont.)

 Eventos de teclas são gerados quando as teclas no teclado são pressionadas e liberadas.

 Uma classe que implementa KeyListener deve fornecer definições para os métodos KeyPressed, KeyReleased e

KeyTyped, cada uma das quais recebe um KeyEvent como seu argumento.

 A classe keyEvent é uma subclasse de InputEvent.

 O método KeyPressed é chamado em resposta ao pressionamento de qualquer tecla.

 O método KeyTyped é chamado em resposta ao

pressionamento de qualquer tecla que não é uma tecla de ação (por exemplo, seta, home, end, page up, page down, uma tecla de função, num lock, print screen, scrool lock, caps lock e

pause.

 O método KeyRelease é chamado quando a tecla é liberada

depois de qualquer evento KeyPressed ou KeyTyped.

93

Tratamento de Eventos (cont.)

(94)

Li n g u age m d e Pr o g ramação

94

Tratamento de Eventos (cont.)

(95)

Li n g u age m d e Pr o g ramação

95

Tratamento de Eventos (cont.)

(96)

Li n g u age m d e Pr o g ramação

Primeiro Formulário

Vamos criar um formulário simples utilizando o Swing:

Para começar nosso formulário iremos criar uma classe EX31.java:

96

(97)

Li n g u age m d e Pr o g ramação

Iremos usar dois componentes: uma etiqueta/label (JLabel) e um campo de texto (JTextField):

97

Primeiro Formulário (cont.)

(98)

Li n g u age m d e Pr o g ramação

Na classe EX31, crie um método MontaFormulario para inicializar os componentes:

98

Primeiro Formulário (cont.)

(99)

Li n g u age m d e Pr o g ramação

Todo componente Swing deve ser adicionado a um contêiner (Container) que administrará o agrupamento e exibição dos mesmos.

Usaremos o container mais comum, um Jpanel (algo como um painel de componentes). Através de seu método add conseguimos

adicionar nossos componentes:

99

Não esqueça de importar a biblioteca JPanel no pacote java.swing e nem de declarar o componentes JPanel.

Primeiro Formulário (cont.)

(100)

Li n g u age m d e Pr o g ramação

Por último, para exibirmos nosso formulário simples,

precisamos colocar nosso Jpanel em uma janela. Usaremos a classe JFrame, que representa uma janela simples:

100

Não esqueça de importar a biblioteca JFrame no pacote java.swing e nem de declarar o componentes JFrame.

Primeiro Formulário (cont.)

(101)

Li n g u age m d e Pr o g ramação

O método pack() de JFrame, chamado acima, serve para redimensionar nosso frame para um tamanho adequado baseado nos componentes que ele tem.

O setVisible recebe um boolean indicando se queremos que a janela seja visível ou não.

101

Primeiro Formulário (cont.)

(102)

Li n g u age m d e Pr o g ramação

Vamos apenas adicionar um último comando que indica ao nosso frame que a aplicação deve ser terminada quando o usuário fechar a janela:

102

Primeiro Formulário (cont.)

(103)

Li n g u age m d e Pr o g ramação

Vamos chamar o método MontaFormulario() na classe main para testar o programa.

Criar um objeto da classe EX31 e chamar o método MontaFormulario():

103

Primeiro Formulário (cont.)

(104)

Li n g u age m d e Pr o g ramação

104

Primeiro Formulário (cont.)

(105)

Li n g u age m d e Pr o g ramação

Ao rodar este programa, teremos a seguinte tela para digitação do nome:

Precisamos agora adicionar os eventos

105

Primeiro Formulário (cont.)

(106)

Li n g u age m d e Pr o g ramação

Adicionando Eventos

O Swing possui uma forma muito elegante de

trabalhar com eventos (através de interfaces).

O usuário pode disparar eventos ao digitar, ao clicar, ao passar o mouse e muitas outras situações.

No nosso formulário, usaremos um botão

(componente) que, quando clicado pelo usuário (evento), disparará um método

(tratador/handler).

Neste método, vamos recuperar o texto digitado pelo usuário e efetuar alguma ação.

106

(107)

Li n g u age m d e Pr o g ramação

O componente Swing que representa um botão é o Jbutton.

Precisamo criar um botao e colocá-lo no nosso container (o JPanel):

107

Adicionando Eventos (cont.)

(108)

Li n g u age m d e Pr o g ramação

Como disparar um método quando o botão for clicado?

O Swing nos traz o conceito de Listeners (ouvintes), que são interfaces que

implementamos com métodos para serem disparados por eventos.

No nosso caso, para fazer um método disparar ao clique do botão, usamos a interface

ActionListener. Essa interface nos dá um método actionPerformed:

108

Adicionando Eventos (cont.)

(109)

Li n g u age m d e Pr o g ramação

Vamos fazer então nossa própria classe formulário implementar essa interface e esse método.

Queremos, quando o botão for clicado, pegar o

texto digitado pelo usuário e exibir na tela (vamos usar o JOptionPane para isso).

Nosso método actionPerformed fica desta forma:

109

Adicionando Eventos (cont.)

(110)

Li n g u age m d e Pr o g ramação

O último detalhe que falta é indicar que essa ação (esse ActionListener) deve ser disparado quando o botão for clicado.

Fazemos isso através do método addActionListener chamado no botão.

Ele recebe como argumento um objeto que

implementa ActionListener (no nosso caso, o próprio objeto EX31, o this):

110

Adicionando Eventos (cont.)

(111)

Li n g u age m d e Pr o g ramação

Não esquecer de importar as bibliotecas para mensagens de diálogos e para

manipulação de eventos:

Além disso, sua classe deverá implementar a interface ActionListener:

111

Adicionando Eventos (cont.)

(112)

Li n g u age m d e Pr o g ramação

112

(113)

Li n g u age m d e Pr o g ramação

Ao rodar esse programa, você verá nosso formulário com um label, um campo de texto e um botão.

Depois de digitar algo, ao clicar no botão, você verá uma mensagem com o texto do campo de texto:

113

Adicionando Eventos (cont.)

Referências

Documentos relacionados

Já agora não se me dá de confessar que sentia umas tais ou quais cócegas de curiosidade, por saber onde ficava a origem dos séculos, se era tão misteriosa como a origem do Nilo, e

Necessidades Fisiológicas (fome, sede, sono, higiene, conforto, estimulação …) Necessidade de Segurança (defesa, protecção, estabilidade, ausência de dor,

Fundamentos de matemática elementar: Conjuntos e funções, V.1; Trigonometria V.3; Matrizes determinantes e sistemas V.4; Complexos, Polinômios e Equações V.6; SP, 1994.. Rio

Linguagem, Classe Social e Educação: a linguagem na educação e na pesquisa: uma sócio- análise, 45h/a, 03 créditos; Linguagem, Classe Social e Educação: oralidade e escrita,

Para esta investigação, optou-se pela utilização do método de estudo de caso único, com base na estrutura teórica de Rudzki (1998), sendo utilizados para a coleta de dados,

4.04.04.021 Aférese Para Paciente Abo Incompatível NÃO SIM 4.04.04.030 Antigenemia Para Diagnóstico De Cmv Pós Transplante NÃO SIM 4.04.04.048 Avaliação Quimerismo - Vntr - Doador

Diagnosis. Rhinocricus fortaleza sp. 13), but differs in the shape of the posterior gonopod, with the solenomere being distally pointed, shorter than the external branch (Fig.

Suco de uva ou leite Frutas: Maçã e banana Esfirra de frango Arroz, feijão, franguinho grelhado, massinha penne ao sugo (separada) Saladas: Beterraba e cenoura cozidas.. Mamão