SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
LPV
gabriel jesus
COMPONENTES
SWING
Java
Como
Programar
8ª Edição
RESUMO
BASEADO
NO LIVRO
 Uma interface gráfica (GUI) apresenta um mecanismo
amigável ao usuário para interagir com um aplicativo.
 Uma GUI dá ao aplicativo uma aparência e
comportamento distintos.
 Uma boa interface facilita o aprendizado e utilização do
aplicativo pelo usuário.
 As GUI são construídas a partir de componentes GUI.
 Um componente GUI é um objeto que permite ao
usuário interagir via mouse, teclado, formulário,
reconhecimento de voz, etc.
 Muitas IDEs fornecem ferramentas de projeto GUI para
facilitar a construção da interface.
Introdução
 É possível utilizar uma caixa de diálogo para interagir
com o usuário.
 A caixa de diálogo é utilizada para receber informações
do usuário ou exibir informações para o usuário.
 A classe JOptionPane do pacote javax.swing fornece
caixas de diálogos pré-construídas tanto para entrada
como para saída.
 Esses diálogos são exibidos invocando métodos
JOptionPane static.
 Uma caixa de diálogo modal só deve ser usada quando
for necessário impedir usuários de interagir com um
restante de um aplicativo até que eles descartem o
diálogo.
 Não é necessário a criação de um objeto para utilizar
os métodos showInputDialog, showMessageDialog e
parseInt. São métodos invocados a partir da classe.
JOptionPane
 Somente as caixas de diálogo não atendem todos os
requisitos de uma boa interface.
 A maioria dos aplicativos exige interfaces mais
elaboradas e personalizadas.
 Por isto, há muitos componentes GUI Swing no pacote
javax.
 A maioria dos componentes são componentes Java
puros (são escritos, manipulados e exibidos em Java).
 Estes componentes fazerm parte das Java Foundatiton
Classes (JFC) – bibliotecas para desenvolvimentos de
GUI para múltiplas plataformas.
Componentes Swing
 Há dois pacotes básicos que auxiliam na criação de
componentes: java.awt e javax.swing.
 Os componentes java.awt são desenhados conforme a
plataforma de execução.
 Os componentes java.awt dependem da plataforma
local para determinar sua funcionalidade, aparência e
comportamento. São componentes pesados.
 Os componentes javax.swing assumem a mesma
aparência em qualquer plataforma. São componentes
leves.
 A principal hierarquia de classes utilizadas na
construção de GUI é descrita abaixo:
 Object >> Component >> Container >> JComponent
Componentes Swing
 Os componentes derivados de JComponent possui
vários recursos:
 aparência e comportamento plugáveis (personalização
conforme plataforma)
 teclas de atalho (mnemônicos) para acesso direto dos
componentes pelo teclado.
 capacidade de tratamento de eventos
 breve descrição do propósito do componente (dica de
ferramenta)
 suporte para acessibilidade (leitores de tela em braile)
 suporte para localização de interface com o usuário
(diferentes linguas e culturas)
Componentes Swing
 A maioria das janelas podem conter componentes
Swing e são instâncias da classe JFrame ou uma
subclasse de JFrame.
 JFrame é uma subclasse indireta de java.awt.Window e
descende diretamente de java.awt.Frame.
 A classe java.awt.Window fornece atributos e
comportamentos básicos de uma janela.
 barra de título na parte superior
 botões para minimizar, maximizar e fechar a janela.
 Um JLabel (rótulo) fornece um texto que declara a
finalidade de cada componente dentro de uma janela.
Pode exibir apenas texto, uma imagem ou uma
combinação de imagem com texto.
A Janela e seus Componentes
 O gerenciador de layout FlowLayout organiza os
componentes da esquerda para a direita. Sempre
reorganiza os componentes quando as dimensões do
container (JFrame) são alteradas.
 O método setLayout é utilizado para definir qual
gerenciador de layout deve ser utilizado.
 Todos os componentes devem ser adicionados
explicitamente dentro do contêiner.
 Um Icon é um objeto que implementa a interface
javax.swing.Icon. A classe ImageIcon é um exemplo.
 A classe ImageIcon suporta vários formatos de imagem
(GIF, PNG, JPEG).
A Janela e seus Componentes
 A interface javax.swing.SwingConstants declara um
conjunto de constantes que são usadas para muitos
componentes Swing.
 Às vezes, as constantes são utilizadas para auxiliar no
posicionamento dos textos e ícones dentro de um
JLabel.
 SwingConstants.LEFT
 SwingConstants.CENTER
 SwingConstants.RIGTH
 SwingConstants.TOP
 SwingConstants.CENTER
 SwingConstants.BOTTON
A Janela e seus Componentes
 O usuário interage com uma GUI para indicar as
tarefas que devem ser executadas pelo aplicativo.
 As GUIs são baseadas em evento.
 Quando o usuário interage com a GUI gera um evento
que guia o programa na realização de uma tarefa.
 Alguns exemplos de evento:
 clicar em um botão
 digitar em um campo de texto
 selecionar um item do menu
 fechar uma janela
 mover o mouse
Eventos
 A classe JText estende a classe JTextComponent que
fornece muitos recursos comuns aos componentes
baseados em texto.
 A classe JPasswordField estende a classe JTextField e
adiciona métodos de processamento de senhas.
 Ambos os componentes representam uma área de uma
única linha onde o usuário pode inserir um texto.
 Um JPasswordField mostra que caracteres estão sendo
digitados, mas oculta os caracteres reais.
 Quando o usuário digita um texto em um dos
componentes e tecla ENTER um evento ocorre.
 O texto só pode ser digitado para o componente que
estiver em foco.
 Um componente recebe o foco quando o usuário clica no
componente. Isto é importante para capturar
corretamente a origem do evento.
JTextField e JPasswordField
 Uma classe interna normalmente é utilizada para
implementar processadores de eventos (handlers de
evento).
 O objeto de classe interna pode acessar todos os
membros da classe externa.
 Um evento de ação é representado pela classe
java.awt.event.ActionEvent.
 Um evento de ação deve ser processado por um objeto
que implemente a interface
java.awt.event.ActionListener.
 Como o JPasswordField descende de JTextField, ambos
suportam os mesmos eventos.
 Um ouvinte de evento deve implementar a interface
apropriada de ouvinte de evento.
JTextField e JPasswordField
 Muitos tipos diferentes de eventos podem ocorrer quando
o usuário interage com uma GUI.
 As informações de evento são armazenados em um objeto
de uma classe que estende java.awt.AWTEvent.
 Veja a hierarquia de eventos abaixo:
 AWTEVent
 ActionEvent
 AdjustmentEvent
 ItemEvent
 TextEvent
 ComponentEvent
 ContainerEvent
 FocusEvent
 PaintEvent
 WindowEvent
 InputEvent
 KeyEvent
 MouseEvent
 MouseWheelEvent
Tipos de Eventos e Interfaces
 Tipos adicionais de evento específicos dos componentes
Swing são declarados no pacote javax.swing.event.
 Para trabalhar com processamento de eventos precisamos
identificar três elementos.
 a origem do evento (componente GUI com o qual o usuário
interage)
 o objeto do evento (objeto que guarda informações sobre o
evento que ocorreu)
 o ouvinte do evento (objeto que é notificado pela origem quando
um evento ocorre e executa um método em resposta ao evento)
 O processamento de um evento gerado por um objeto
(origem) é delegado a um outro objeto (ouvinte).
 Este modelo é chamado de modelo de delegação de
evento.
 Para cada tipo de evento há uma interface listener de
evento correspondente.
Tipos de Eventos e Interfaces
 Cada interface listener de eventos especifica um ou mais
métodos de tratamento de evento que devem ser
declarados na classe que implementa a interface.
 Cada classe que implementa uma interface deve declarar
(definir o código) todos os métodos dessa interface.
 Cada JComponent tem uma variável de instância
chamada listenerList que referencia um objeto de classe
javax.swing.event.EventListenerList para registrar os
seus ouvintes (listeners).
 Um componente pode ter vários ouvintes registrados para
processar os seus eventos.
 Cada tipo de evento é tratado por uma interface listener
apropriada:
 ActionEvent é tratado por ActionListener
 MouseEvent é tratado por MouseListener e MouseMotionListener
 KeyEvent é tratado por KeyListener
Tipos de Eventos e Interfaces
 A partir do evento, o componente decide qual o tipo de
ouvinte deve receber o evento e qual método deve ser
executado.
 Em um ActionEvent, o evento é despachado para o método
actionPerformed de cada ActionListener registrado.
 Em um MouseEvent, o evento é despachado para cada
MouseListener ou MouseMotionListener registrado, e o
método correto será invocado.
 O componente saberá chamar o método apropriado
para cada evento que ocorre, mas para isto é
necessário que o handler (tratador ou ouvinte) de
evento seja registrado no componente corretamente.
Tipos de Eventos e Interfaces
 Um botão é usado pelo usuário para disparar uma ação
específica por meio de um clique.
 Um aplicativo Java pode usar vários tipos de botões:
 botões de comando
 caixas de seleção
 botões de alternação
 botões de opção
 Veja a hierarquia dos botões derivada do pacote
javax.swing
 JComponent
 AbstractButton
 JButton
 JToggleButton
 JCheckBox
 JRadioButton
Botões de Acão : JButton
 O JButton representa um botão de comando e pode
possuir um texto em sua face (rótulo do botão).
 Um botão de comando gera um ActionEvent quando é
clicado pelo usuário.
 Um JButton pode exibir um Icon.
 Um JButton pode exibir um Icon rollover (exibido
quando o usuário posiciona o mouse sobre o botão).
Botões de Acão : JButton
 Há três tipos de botões de estado:
 JToggleButton,
 JCheckBox
 JRadioButton.
 O JRadioButton é utilizado para representar valores
mutuamente exclusivos.
 O JCheckBox permite a escolha de múltiplos valores
inclusivos.
Botões de Estado: JCheckBox
 Estes botões (JRadioButton) possuem dois estados:
selecionado e não-selecionado.
 O ButtonGroup é utilizado para manter um
relacionamento lógico entre botões de opção.
 O ButtonGroup não é exibido. Ele serve apenas para
agrupar os botões.
 Este tipo de botão é muito útil para permitir a seleção
de itens mutuamente exclusivos.
Botões de Estado: JRadionButton
 Uma caixa de combinação (lista drop-down) permite ao
usuário selecionar um item em uma lista.
 As caixas de combinação são implementadas com a
classe JComboBox que estende JComponent.
 JComboBox gera ItemEvent como JCheckBox e
JRadioButton.
 Uma classe interna anônima tem acesso a todos os
membros da classe externa.
 A classe interna anônima que implementa uma
interface, deve implementar cada método da interface.
Caixa de Combinação: JComboBox
 Uma lista exibe uma séria de itens a partir da qual o
usuário pode selecionar um ou mais itens.
 As listas são criadas com a classe JList, que estende
diretamente a classe JComponent.
 A classe JList suporta listas de uma única seleção ou
listas de seleção múltipla.
Listas : JList
 Há três modos de seleção para uma lista definidos pela
classe ListSelectionModel.
 SINGLE_SELECTION (permite selecionar um item)
 SINGLE_INTERVAL_SELECTION (permite selecionar em um
intervalo contíguo de itens)
 MULTIPLE_INTERVAL_SELECTION (pode selecionar um
intervalo contínuo de itens)
 Uma lista de seleção múltipla permite ao usuário
selecionar muitos itens de uma JList.
Listas : JList
 As interfaces ouvintes de eventos do mouse são:
 MouseListener
 MouseMotionListener
 Os eventos do mouse podem ser capturados por
qualquer component GUI que deriva de
java.awt.Component.
Eventos de Mouse
 O pacote javax.swing.event contém a interface
MouseInputListener que estende as interfaces
MouseListener e MouseMotionListener para criar uma
única interface com todos os métodos.
 Os métodos são chamados quando o mouse interage
com um Component, se objetos listeners de evento
apropriados forem registrados para esse Component.
Eventos de Mouse
 Veja a lista de métodos de MouseListener:
 mousePressed(MouseEvent event) : quando um botão do
mouse é pressionado enquanto o cursor do mouse estiver
sobre um component.
 mouseClicked(MouseEvent event) : quando um botão do
mouse é pressionado e liberado enquanto o cursor do mouse
pairar sobre um componente. Esse evento é sempre precedido
por uma chamada para mousePressed.
Eventos de Mouse
 Veja a lista de métodos de MouseListener:
 mouseReleased(MouseEvent event) : quando um botão do
mouse é liberado depois de ser pressionado. do mouse estiver
sobre um component. Esse evento é sempre precedido por
uma chamada para mousePressed e uma ou mais chamadas
para mouseDragged.
 mouseEntered(MouseEvent event) : quando o cursor do
mouse entra nos limites de um componente.
 mouseExited(MouseEvent event) : quando o curso do mouse
deixa os limites de um componente.
Eventos de Mouse
 Veja a lista de métodos de MouseMotionListener:
 mouseDragged(MouseEvent event) : quando o botão do mouse
é pressionado enquanto o curso do mouse estiver sobre um
componente e o mouse é movido enquanto o botão do mouse
permanecer pressionado. Esse é evento é sempre precedido
por uma chamada de mousePressed. Todos os eventos de
arrastar são enviados para o componente em que o usuário
começoou a arrastar o mouse.
 mouseMoved(MouseEvent event) : quando o mouse é movido
(sem pressionamento de botões) quando o curso do mouse
está sobre um componente. Todos os eventos de movimento
são enviados para o componente sobre o qual o mouse
atualmente está posicionado.
Eventos de Mouse
 Cada método recebe como argumento um objeto
MouseEvent que contém informações sobre o evento de
mouse (incluindo as coordenadas x e y da localização
em que ocorreu o evento).
 Os métodos e as constantes e classe InputEvent
permitem-lhe determinar o botão do mouse em que o
usuário clicou.
 Há também a interface MouseWheelListener que
permite que aplicativos respondam à rotação da roda
de um mouse. Há métodos nesta interface que permite
obter informações sobre a quantidade de rotação da
roda.
Eventos de Mouse
 Muitas interfaces ouvintes (Listener) possuem muitos
métodos.
 Não é sempre desejável implementar todos os métodos
em uma interface ouvinte.
 Por esta razão, o Java fornece classes adaptadoras que
implementa um interface e fornece um implementação
padrão (método vazio) para cada um dos métodos da
interface.
Classes Adaptadores: Adapters
 Segue a lista de algumas classes Adaptadoras com
suas respectivas interfaces.
 ComponentAdapter implementa ComponentListener
 ContainerAdapter implementa ContainerListener
 FocusAdapter implementa FocusListener
 KeyAdapter implementa KeyListener
 MouseAdapter implementa MouseListener
 WindowAdapter implementa WindowListener
Classes Adaptadores: Adapters
 Usando o Adapter, posso estender a classe adaptadora
ao invés de implementar a interface, para tratar os
eventos gerados pelos componentes da GUI.
 A classe MouseEvent herda vários métodos de
InputEvent que podem distinguir os cliques do mouse e
a combinação dos cliques com pressionamento de
teclas do teclado.
Classes Adaptadores: Adapters
 Os componentes leves do Swing que estendem
JComponent contém o método paintComponent que é
chamado quando um componente leve é exibido.
 Este método pode ser sobrescrito para alterar a forma
como o componente deve ser exibido.
 Um componente pode ser opaco ou transparente. O
método setOpaque() controla isto.
 O método da superclasse (JComponent) deve ser
sempre o primeiro a ser chamado no método
paintComponent da subclasse.
 O método repaint() indica que o componente deve ser
atualizado na tela o mais rápido possível.
Paineis : JPanel
 Os eventos do teclado são tratados por uma classe que
implementa KeyListener.
 Eventos de teclado são gerados quando teclas são
pressionadas e liberadas.
 Os métodos keyPressed(), keyReleased() e keyTyped()
recebem um KeyEvent como argumento e definem o
código para tratamento do evento.
 keyPressed() é invocado quando qualquer tecla é pressionada.
 keyTyped() é invocado quando uma tecla que não é de ação é
invocada (home, end, setas, etc).
 keyReleased() é chamado quando a tecla é lançada após um
dos métodos anteriores.
Eventos do Teclado
 Os gerenciadores de layout organizam os componentes
GUI em um contêiner para propósito de apresentação.
 Os gerenciadores ajudam a organizar os elementos
definindo de forma automática as dimensões e posição
de cada componente.
 Todos os gerenciadores de layout implementam a
interface java.awt.LayoutManager.
 O método setLayout() da classe Container aceita um
objeto que implementa a interface LayoutManager como
argumento.
Gerenciadores de Layout
 Há basicamente três maneiras de organizar
componentes em uma GUI.
 Posicionamento absoluto: você pode configurar o layout com
null e utilizar os métodos setSize e setLocation ou setBounds
para configurar cada componente. É mais trabalhoso.
 Gerenciadores de layout: posiciona os elementos de forma
mais simples e rápida, mas perdemos um pouco o controle
sobre as dimensões e posicionamento dos elementos.
 Posicionamento visual em uma IDE: algumas IDEs fornecem
ferramentas para construir layout com arrastar-e-soltar.
Além disto, é possível programar os eventos usando clique
duplo sobre os componentes. Neste caso, a IDE gera o código
Java necessário. A IDE fornece um controle bom sobre
posição, tamanho e alinhamento dos elementos.
Gerenciadores de Layout
 Há vários gerenciadores de layout. Neste momento
focaremos em apenas três deles:
 FlowLayout : todos os componentes são colocados em
sequência da esquerda para a direita na ordem em que foram
adicionados. É o padrão para JPanel.
 BorderLayout: organiza os componentes em cinco áreas:
NORTH, SOUTH, EAST, WEST, CENTER. É o padrão para
JFrame.
 GridLayout: organiza os componentes em linhas e colunas.
Gerenciadores de Layout
 É o gerenciador mais simples. Os componentes são
colocados no contêiner da esquerda para a direita na
ordem em que foram adicionados.
Gerenciador FlowLayout
 Organiza os componentes em cinco regiões do contêiner
e implementa a interface LayoutManager2.
 Limita o contêiner a possuir apenas cinco elementos:
um por região.
 O componente colocado na região pode ser outro
container que contenha outros componentes.
 As regiões se expandem de acordo com as
características dos componentes inseridos nelas.
Gerenciador BorderLayout
 A ausência de um componente em um região faz com
que a outra região se expanda para ocupar a área da
região vazia.
 Se nenhuma região for indicada o componente será
adicionado ao centro.
 Se mais de um componente for inserido em uma região,
apenas o último inserido será exibido.
Gerenciador BorderLayout
 Divide o contêiner em uma grade.
 A grade possui linha e colunas.
 Todos os componentes da grade tem a mesma altura e
largura.
 Cada componente é inserido em uma célula da grade.
Gerenciador GridLayout
 Uma GUI complexa exige que cada componente seja
colocado em um local exato.
 Estas GUIs, frequentemente, são formadas por
múltiplos painéis com os componentes de cada painel
organizados em layout específico.
 A classe JPanel estende JComponent, e JComponent
estende JContainer, então todo JPanel é um Conteiner.
Layouts Complexos
 Por isto, todo JPanel pode possuir outros componentes,
inclusive outros JPanels com o método add().
 O JPanel não tem um painel de conteúdo como um
JFrame. Neste caso, os componentes são inseridos
diretamente no JPanel.
 O painel é redimensionado de acordo com as dimensões
dos componentes inseridos nele.
Layouts Complexos
 Um JText fornece uma área para manipular múltiplas
linhas de texto. É uma subclasse de JComponent.
 Um JText não possui eventos de ação. A tecla ENTER
provoca uma quebra de linha dentro do componente.
 Um evento externo de outro componente deve ser
utilizado para provocar alguma ação com o conteúdo
do JText.
Áreas de Texto : JText
 Um JScrollPane fornece barras de rolagem para
componentes.
 Um JScrollPane pode utilizar algumas constantes para
definir se e quando as barras de rolagem devem
aparecer.
 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
 JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
 JScrollPane.VERTICAL_SCROLLBAR_NEEDED
 JScrollPane.HORIZONTAL_SCROLLBAR_NEEDED
 JScrollPane.VERTICAL_SCROLLBAR_NEVER
 JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
Áreas de Rolagem : JScrollPane
 Controles deslizantes permitem selecionar a partir de
um intervalo de valores de números inteiros.
 Um JSlider horizontal com marcas de medidas e um
marcador que permitem a um usuário selecionar um
valor.
 JSliders podem ser personalizados para exibir marcas
de medida principais, marcas de medida secundárias e
rótulos para as marcas de medida.
 Os JSliders geram ChangeEvents em resposta a
interações de usuário.
 Um objeto de uma classe que implementa a interface
ChangeListener deve declarar o método stateChanged
pode responder a ChangeEvents.
Controle Deslizante : JSlider
 Um JFrame é uma janela com uma barra de título e
uma borda.
 A classe JFrame é uma subclasse de Frame. Frame é
uma subclasse de Window.
 Uma janela gerada pelo JFrame é exibida conforme o
padrão de janelas do sistema operacional em uso.
 Por padrão, quando o usuário fecha uma janela
JFrame, ela se torna oculta, mas é possível controlar
isto com o método setDefaultCloseOperation().
Janelas : JFrame
 A interface WindowConstants que a classe JFrame
implementa fornece constantes que podem ser
utilizadas para definir o que deve ser feito com a janela
quando o usuário fechá-la.
 DISPOSE_ON_CLOSE (descartada pelo sistema)
 DO_NOTHING_ON_CLOSE (o programa decidirá o que deve
ser feito)
 HIDE_ON_CLOSE (a janela ficará oculta)
Janelas : JFrame
 A janela só é exibida quando o método setVisible() é
invocado com o argumento true.
 O tamanho da janela pode ser configurado com o
método setSize() e a localização com o setLocation().
 Quando a janela é manipulada pelo usuário, alguns
eventos são gerados (WindowEvent).
 Os ouvintes de eventos são registrados com o método
addWindowListener.
Janelas : JFrame
 A interface WindowListener fornece sete métodos para
tratamento dos eventos da janela.
 windowActivated : chamado quando o quando o usuário
torna uma janela ativa.
 windowClosed : chamado logo depois de a janela ser fechada.
 windowClosing: chamado quando o usuário inicia o
fechamento da janela
 windowDeactivated: chamado quando o usuário torna outra
janela a janela ativa.
 windowDeiconified: chamado quando o usuário restaura a
janela que está minimizada.
 windowIconified: chamado quando o usuário minimiza a
janela.
 windowOpened: chamado quando um programa exibe uma
janela pela primeira vez.
Janelas : JFrame
 Os menus permitem que o usuário realiza ações sem
poluir desnecessariamente uma GUI com componentes
extras.
 Os menus podem ser anexados somente aos objetos das
classes que fornecem o método setJMenuBar.
 Duas dessas classes são JFrame e JApplet.
 As classes utilizadas para declarar menus são:
JMenuBar, JMenu, JMenuITem, JCheckBoxMenuItem,
JRadioButtonMenuItem.
Menus : JMenuBar e JMenu
 A classe JMenuBar possui métodos para gerenciar uma
barra de menus (conteiner de menus).
 A classe JMenu possui métodos para gerenciar menus.
 Os menus contém itens de menu e são adicionados a
barras de menus ou a outros menus (submenus).
 Quando um menu é clicado, ele se expande para
mostrar sua lista dos itens de menu.
 A classe JMenuITem contém os métodos para gerenciar
itens de menu.
 Quando um item de menu é selecionado resulta em um
evento de ação.
Menus : JMenuBar e JMenu
 A classe JCheckBoxMenuItem contém métodos para
gerenciar itens de menu que podem ser ativados ou
desativados.
 Uma marca de verificação indica que um item deste tipo
menu foi ativado.
 A classe JRadioButtonMenuItem contém métodos
necessários para gerenciar itens de menu que podem
ser ativados ou desativados.
 Um círculo aparece para indicar que um item deste tipo de
menu foi ativado.
Menus : JMenuBar e JMenu
 Alguns aplicativos fornecem menus pop-up sensíveis ao
contexto.
 No Swing, esses menus são criados com a classe
JPopupMenu.
 Esses menus fornecem opções que são específicas do
componente pelo qual o evento de gatilho pop-up foi
gerado.
 Normalmente, o evento de acionamento pop-up ocorre
quando o usuário pressiona e libera o botão direito do
mouse.
Menu de Contexto : JPopupMenu
 Um programa que utiliza componentes AWT do Java
assume a aparência e o comportamento da plataforma
em que o programa executa.
 Às vezes, isto é desejável porque permite que usuários
do aplicativo em cada plataforma utilizem componentes
com os quais eles já estão acostumados.
 Com o Swing podemos personalizar a aparência e o
comportamento da interface.
Aparência e Comportamento Plugáveis
 Muitos aplicativos utilizam uma interface de múltiplos
documentos (Multiple-Document Interface).
 Estes aplicativos tem uma janela principal (janela-pai)
e outras janelas (janelas-filhas), para gerenciar vários
documentos abertos e que estão sendo processados em
paralelo.
 Um processador de texto e um programa de correio
eletrônico são exemplos de aplicativos MDI.
 As classes JDesktopPane e JInternalFrame são
utilizadas para construir interfaces MDI.
Interface de Múltiplos Documentos
 Um JTabbedFrame organiza componentes GUI em
camadas, das quais somente uma é visível por vez.
 Os usuários acessam cada camada via uma guia –
semelhante a pastas em um gabinete de arquivos.
 Quando o usuário clica na guia a camada é exibida.
Camadas : JTabbedFrame
 Este gerenciador (BoxLayout) organiza os componentes
GUI horizontalmente ao longo do eixo x ou
verticalmente ao longo do eixo y de um contêiner.
 É semelhante ao GridLayout, mas permite que os
componentes organizados na grade variem em tamanho
e sejam adicionados em qualquer ordem.
 Este componente é muito complexo e muito poderoso.
 Vale a pena consultar a documentação para aprender
de forma objetiva a utilização deste gerenciador.
 O GridBagConstraints especifica como um componente
é inserido em um GridBagLayout.
Gerenciador BoxLayout
gabriel.filho@uneb.com.br
Dúvidas e Observações

Mais conteúdo relacionado

Mais procurados

Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigoMauro Pereira
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosLuis Borges Gouveia
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...Fernando Belome Feltrin
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de ComputadoresSuzana Viana Mota
 
Programação Web - CSS
Programação Web - CSSProgramação Web - CSS
Programação Web - CSSMauro Pereira
 
13 Java Script - Validação de formulário
13 Java Script  - Validação de formulário13 Java Script  - Validação de formulário
13 Java Script - Validação de formulárioCentro Paula Souza
 
Aula 8 - Validação - parte 1
Aula 8 - Validação - parte 1Aula 8 - Validação - parte 1
Aula 8 - Validação - parte 1Pacc UAB
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
Excel lista de exercicios básicos
Excel   lista de exercicios básicosExcel   lista de exercicios básicos
Excel lista de exercicios básicosPessoal
 
Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Pacc UAB
 

Mais procurados (20)

Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigo
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Java swing
Java swingJava swing
Java swing
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dados
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
300 Exercícios Resolvidos e Comentados em Python - Fernando Feltrin - Amostra...
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadores
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Programação Web - CSS
Programação Web - CSSProgramação Web - CSS
Programação Web - CSS
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
13 Java Script - Validação de formulário
13 Java Script  - Validação de formulário13 Java Script  - Validação de formulário
13 Java Script - Validação de formulário
 
Aula 8 - Validação - parte 1
Aula 8 - Validação - parte 1Aula 8 - Validação - parte 1
Aula 8 - Validação - parte 1
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Excel lista de exercicios básicos
Excel   lista de exercicios básicosExcel   lista de exercicios básicos
Excel lista de exercicios básicos
 
Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1
 

Destaque (18)

Java e net beans
Java e net beans Java e net beans
Java e net beans
 
Java JOptionPane tutorial - Message, input, and confirm dialogs
Java JOptionPane tutorial - Message, input, and confirm dialogsJava JOptionPane tutorial - Message, input, and confirm dialogs
Java JOptionPane tutorial - Message, input, and confirm dialogs
 
Java 17 Swing
Java 17 SwingJava 17 Swing
Java 17 Swing
 
Java gui
Java guiJava gui
Java gui
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java 07 Entrada Dados
Java 07 Entrada DadosJava 07 Entrada Dados
Java 07 Entrada Dados
 
Java10
Java10Java10
Java10
 
Java Swing
Java SwingJava Swing
Java Swing
 
Fundamentos de java herbert schildt
Fundamentos de java   herbert schildtFundamentos de java   herbert schildt
Fundamentos de java herbert schildt
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Joptionpane
JoptionpaneJoptionpane
Joptionpane
 
Joptionpane
JoptionpaneJoptionpane
Joptionpane
 

Semelhante a Apresentação-Resumo sobre o Java Swing.

IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)Wellington Oliveira
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II Verônica Veiga
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Pedro Neto
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Elaine Cecília Gatto
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Tratamento eventos
Tratamento eventosTratamento eventos
Tratamento eventoscla_venegas
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 
Interfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualInterfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualCampus Party Brasil
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Erisvaldo Junior
 
Capitulo 14 -_componentes_gui_parte_3
Capitulo 14 -_componentes_gui_parte_3Capitulo 14 -_componentes_gui_parte_3
Capitulo 14 -_componentes_gui_parte_3Pedro Neto
 

Semelhante a Apresentação-Resumo sobre o Java Swing. (20)

IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)IHC - Java Interface com o Usuário (Parte 1)
IHC - Java Interface com o Usuário (Parte 1)
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
 
Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Java12
Java12Java12
Java12
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Tratamento eventos
Tratamento eventosTratamento eventos
Tratamento eventos
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 
Interfacestangiveiscomputacaovisual
InterfacestangiveiscomputacaovisualInterfacestangiveiscomputacaovisual
Interfacestangiveiscomputacaovisual
 
Curso Básico Android - Aula 02
Curso Básico Android - Aula 02Curso Básico Android - Aula 02
Curso Básico Android - Aula 02
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3
 
Capitulo 14 -_componentes_gui_parte_3
Capitulo 14 -_componentes_gui_parte_3Capitulo 14 -_componentes_gui_parte_3
Capitulo 14 -_componentes_gui_parte_3
 

Apresentação-Resumo sobre o Java Swing.

  • 3.  Uma interface gráfica (GUI) apresenta um mecanismo amigável ao usuário para interagir com um aplicativo.  Uma GUI dá ao aplicativo uma aparência e comportamento distintos.  Uma boa interface facilita o aprendizado e utilização do aplicativo pelo usuário.  As GUI são construídas a partir de componentes GUI.  Um componente GUI é um objeto que permite ao usuário interagir via mouse, teclado, formulário, reconhecimento de voz, etc.  Muitas IDEs fornecem ferramentas de projeto GUI para facilitar a construção da interface. Introdução
  • 4.  É possível utilizar uma caixa de diálogo para interagir com o usuário.  A caixa de diálogo é utilizada para receber informações do usuário ou exibir informações para o usuário.  A classe JOptionPane do pacote javax.swing fornece caixas de diálogos pré-construídas tanto para entrada como para saída.  Esses diálogos são exibidos invocando métodos JOptionPane static.  Uma caixa de diálogo modal só deve ser usada quando for necessário impedir usuários de interagir com um restante de um aplicativo até que eles descartem o diálogo.  Não é necessário a criação de um objeto para utilizar os métodos showInputDialog, showMessageDialog e parseInt. São métodos invocados a partir da classe. JOptionPane
  • 5.  Somente as caixas de diálogo não atendem todos os requisitos de uma boa interface.  A maioria dos aplicativos exige interfaces mais elaboradas e personalizadas.  Por isto, há muitos componentes GUI Swing no pacote javax.  A maioria dos componentes são componentes Java puros (são escritos, manipulados e exibidos em Java).  Estes componentes fazerm parte das Java Foundatiton Classes (JFC) – bibliotecas para desenvolvimentos de GUI para múltiplas plataformas. Componentes Swing
  • 6.  Há dois pacotes básicos que auxiliam na criação de componentes: java.awt e javax.swing.  Os componentes java.awt são desenhados conforme a plataforma de execução.  Os componentes java.awt dependem da plataforma local para determinar sua funcionalidade, aparência e comportamento. São componentes pesados.  Os componentes javax.swing assumem a mesma aparência em qualquer plataforma. São componentes leves.  A principal hierarquia de classes utilizadas na construção de GUI é descrita abaixo:  Object >> Component >> Container >> JComponent Componentes Swing
  • 7.  Os componentes derivados de JComponent possui vários recursos:  aparência e comportamento plugáveis (personalização conforme plataforma)  teclas de atalho (mnemônicos) para acesso direto dos componentes pelo teclado.  capacidade de tratamento de eventos  breve descrição do propósito do componente (dica de ferramenta)  suporte para acessibilidade (leitores de tela em braile)  suporte para localização de interface com o usuário (diferentes linguas e culturas) Componentes Swing
  • 8.  A maioria das janelas podem conter componentes Swing e são instâncias da classe JFrame ou uma subclasse de JFrame.  JFrame é uma subclasse indireta de java.awt.Window e descende diretamente de java.awt.Frame.  A classe java.awt.Window fornece atributos e comportamentos básicos de uma janela.  barra de título na parte superior  botões para minimizar, maximizar e fechar a janela.  Um JLabel (rótulo) fornece um texto que declara a finalidade de cada componente dentro de uma janela. Pode exibir apenas texto, uma imagem ou uma combinação de imagem com texto. A Janela e seus Componentes
  • 9.  O gerenciador de layout FlowLayout organiza os componentes da esquerda para a direita. Sempre reorganiza os componentes quando as dimensões do container (JFrame) são alteradas.  O método setLayout é utilizado para definir qual gerenciador de layout deve ser utilizado.  Todos os componentes devem ser adicionados explicitamente dentro do contêiner.  Um Icon é um objeto que implementa a interface javax.swing.Icon. A classe ImageIcon é um exemplo.  A classe ImageIcon suporta vários formatos de imagem (GIF, PNG, JPEG). A Janela e seus Componentes
  • 10.  A interface javax.swing.SwingConstants declara um conjunto de constantes que são usadas para muitos componentes Swing.  Às vezes, as constantes são utilizadas para auxiliar no posicionamento dos textos e ícones dentro de um JLabel.  SwingConstants.LEFT  SwingConstants.CENTER  SwingConstants.RIGTH  SwingConstants.TOP  SwingConstants.CENTER  SwingConstants.BOTTON A Janela e seus Componentes
  • 11.  O usuário interage com uma GUI para indicar as tarefas que devem ser executadas pelo aplicativo.  As GUIs são baseadas em evento.  Quando o usuário interage com a GUI gera um evento que guia o programa na realização de uma tarefa.  Alguns exemplos de evento:  clicar em um botão  digitar em um campo de texto  selecionar um item do menu  fechar uma janela  mover o mouse Eventos
  • 12.  A classe JText estende a classe JTextComponent que fornece muitos recursos comuns aos componentes baseados em texto.  A classe JPasswordField estende a classe JTextField e adiciona métodos de processamento de senhas.  Ambos os componentes representam uma área de uma única linha onde o usuário pode inserir um texto.  Um JPasswordField mostra que caracteres estão sendo digitados, mas oculta os caracteres reais.  Quando o usuário digita um texto em um dos componentes e tecla ENTER um evento ocorre.  O texto só pode ser digitado para o componente que estiver em foco.  Um componente recebe o foco quando o usuário clica no componente. Isto é importante para capturar corretamente a origem do evento. JTextField e JPasswordField
  • 13.  Uma classe interna normalmente é utilizada para implementar processadores de eventos (handlers de evento).  O objeto de classe interna pode acessar todos os membros da classe externa.  Um evento de ação é representado pela classe java.awt.event.ActionEvent.  Um evento de ação deve ser processado por um objeto que implemente a interface java.awt.event.ActionListener.  Como o JPasswordField descende de JTextField, ambos suportam os mesmos eventos.  Um ouvinte de evento deve implementar a interface apropriada de ouvinte de evento. JTextField e JPasswordField
  • 14.  Muitos tipos diferentes de eventos podem ocorrer quando o usuário interage com uma GUI.  As informações de evento são armazenados em um objeto de uma classe que estende java.awt.AWTEvent.  Veja a hierarquia de eventos abaixo:  AWTEVent  ActionEvent  AdjustmentEvent  ItemEvent  TextEvent  ComponentEvent  ContainerEvent  FocusEvent  PaintEvent  WindowEvent  InputEvent  KeyEvent  MouseEvent  MouseWheelEvent Tipos de Eventos e Interfaces
  • 15.  Tipos adicionais de evento específicos dos componentes Swing são declarados no pacote javax.swing.event.  Para trabalhar com processamento de eventos precisamos identificar três elementos.  a origem do evento (componente GUI com o qual o usuário interage)  o objeto do evento (objeto que guarda informações sobre o evento que ocorreu)  o ouvinte do evento (objeto que é notificado pela origem quando um evento ocorre e executa um método em resposta ao evento)  O processamento de um evento gerado por um objeto (origem) é delegado a um outro objeto (ouvinte).  Este modelo é chamado de modelo de delegação de evento.  Para cada tipo de evento há uma interface listener de evento correspondente. Tipos de Eventos e Interfaces
  • 16.  Cada interface listener de eventos especifica um ou mais métodos de tratamento de evento que devem ser declarados na classe que implementa a interface.  Cada classe que implementa uma interface deve declarar (definir o código) todos os métodos dessa interface.  Cada JComponent tem uma variável de instância chamada listenerList que referencia um objeto de classe javax.swing.event.EventListenerList para registrar os seus ouvintes (listeners).  Um componente pode ter vários ouvintes registrados para processar os seus eventos.  Cada tipo de evento é tratado por uma interface listener apropriada:  ActionEvent é tratado por ActionListener  MouseEvent é tratado por MouseListener e MouseMotionListener  KeyEvent é tratado por KeyListener Tipos de Eventos e Interfaces
  • 17.  A partir do evento, o componente decide qual o tipo de ouvinte deve receber o evento e qual método deve ser executado.  Em um ActionEvent, o evento é despachado para o método actionPerformed de cada ActionListener registrado.  Em um MouseEvent, o evento é despachado para cada MouseListener ou MouseMotionListener registrado, e o método correto será invocado.  O componente saberá chamar o método apropriado para cada evento que ocorre, mas para isto é necessário que o handler (tratador ou ouvinte) de evento seja registrado no componente corretamente. Tipos de Eventos e Interfaces
  • 18.  Um botão é usado pelo usuário para disparar uma ação específica por meio de um clique.  Um aplicativo Java pode usar vários tipos de botões:  botões de comando  caixas de seleção  botões de alternação  botões de opção  Veja a hierarquia dos botões derivada do pacote javax.swing  JComponent  AbstractButton  JButton  JToggleButton  JCheckBox  JRadioButton Botões de Acão : JButton
  • 19.  O JButton representa um botão de comando e pode possuir um texto em sua face (rótulo do botão).  Um botão de comando gera um ActionEvent quando é clicado pelo usuário.  Um JButton pode exibir um Icon.  Um JButton pode exibir um Icon rollover (exibido quando o usuário posiciona o mouse sobre o botão). Botões de Acão : JButton
  • 20.  Há três tipos de botões de estado:  JToggleButton,  JCheckBox  JRadioButton.  O JRadioButton é utilizado para representar valores mutuamente exclusivos.  O JCheckBox permite a escolha de múltiplos valores inclusivos. Botões de Estado: JCheckBox
  • 21.  Estes botões (JRadioButton) possuem dois estados: selecionado e não-selecionado.  O ButtonGroup é utilizado para manter um relacionamento lógico entre botões de opção.  O ButtonGroup não é exibido. Ele serve apenas para agrupar os botões.  Este tipo de botão é muito útil para permitir a seleção de itens mutuamente exclusivos. Botões de Estado: JRadionButton
  • 22.  Uma caixa de combinação (lista drop-down) permite ao usuário selecionar um item em uma lista.  As caixas de combinação são implementadas com a classe JComboBox que estende JComponent.  JComboBox gera ItemEvent como JCheckBox e JRadioButton.  Uma classe interna anônima tem acesso a todos os membros da classe externa.  A classe interna anônima que implementa uma interface, deve implementar cada método da interface. Caixa de Combinação: JComboBox
  • 23.  Uma lista exibe uma séria de itens a partir da qual o usuário pode selecionar um ou mais itens.  As listas são criadas com a classe JList, que estende diretamente a classe JComponent.  A classe JList suporta listas de uma única seleção ou listas de seleção múltipla. Listas : JList
  • 24.  Há três modos de seleção para uma lista definidos pela classe ListSelectionModel.  SINGLE_SELECTION (permite selecionar um item)  SINGLE_INTERVAL_SELECTION (permite selecionar em um intervalo contíguo de itens)  MULTIPLE_INTERVAL_SELECTION (pode selecionar um intervalo contínuo de itens)  Uma lista de seleção múltipla permite ao usuário selecionar muitos itens de uma JList. Listas : JList
  • 25.  As interfaces ouvintes de eventos do mouse são:  MouseListener  MouseMotionListener  Os eventos do mouse podem ser capturados por qualquer component GUI que deriva de java.awt.Component. Eventos de Mouse
  • 26.  O pacote javax.swing.event contém a interface MouseInputListener que estende as interfaces MouseListener e MouseMotionListener para criar uma única interface com todos os métodos.  Os métodos são chamados quando o mouse interage com um Component, se objetos listeners de evento apropriados forem registrados para esse Component. Eventos de Mouse
  • 27.  Veja a lista de métodos de MouseListener:  mousePressed(MouseEvent event) : quando um botão do mouse é pressionado enquanto o cursor do mouse estiver sobre um component.  mouseClicked(MouseEvent event) : quando um botão do mouse é pressionado e liberado enquanto o cursor do mouse pairar sobre um componente. Esse evento é sempre precedido por uma chamada para mousePressed. Eventos de Mouse
  • 28.  Veja a lista de métodos de MouseListener:  mouseReleased(MouseEvent event) : quando um botão do mouse é liberado depois de ser pressionado. do mouse estiver sobre um component. Esse evento é sempre precedido por uma chamada para mousePressed e uma ou mais chamadas para mouseDragged.  mouseEntered(MouseEvent event) : quando o cursor do mouse entra nos limites de um componente.  mouseExited(MouseEvent event) : quando o curso do mouse deixa os limites de um componente. Eventos de Mouse
  • 29.  Veja a lista de métodos de MouseMotionListener:  mouseDragged(MouseEvent event) : quando o botão do mouse é pressionado enquanto o curso do mouse estiver sobre um componente e o mouse é movido enquanto o botão do mouse permanecer pressionado. Esse é evento é sempre precedido por uma chamada de mousePressed. Todos os eventos de arrastar são enviados para o componente em que o usuário começoou a arrastar o mouse.  mouseMoved(MouseEvent event) : quando o mouse é movido (sem pressionamento de botões) quando o curso do mouse está sobre um componente. Todos os eventos de movimento são enviados para o componente sobre o qual o mouse atualmente está posicionado. Eventos de Mouse
  • 30.  Cada método recebe como argumento um objeto MouseEvent que contém informações sobre o evento de mouse (incluindo as coordenadas x e y da localização em que ocorreu o evento).  Os métodos e as constantes e classe InputEvent permitem-lhe determinar o botão do mouse em que o usuário clicou.  Há também a interface MouseWheelListener que permite que aplicativos respondam à rotação da roda de um mouse. Há métodos nesta interface que permite obter informações sobre a quantidade de rotação da roda. Eventos de Mouse
  • 31.  Muitas interfaces ouvintes (Listener) possuem muitos métodos.  Não é sempre desejável implementar todos os métodos em uma interface ouvinte.  Por esta razão, o Java fornece classes adaptadoras que implementa um interface e fornece um implementação padrão (método vazio) para cada um dos métodos da interface. Classes Adaptadores: Adapters
  • 32.  Segue a lista de algumas classes Adaptadoras com suas respectivas interfaces.  ComponentAdapter implementa ComponentListener  ContainerAdapter implementa ContainerListener  FocusAdapter implementa FocusListener  KeyAdapter implementa KeyListener  MouseAdapter implementa MouseListener  WindowAdapter implementa WindowListener Classes Adaptadores: Adapters
  • 33.  Usando o Adapter, posso estender a classe adaptadora ao invés de implementar a interface, para tratar os eventos gerados pelos componentes da GUI.  A classe MouseEvent herda vários métodos de InputEvent que podem distinguir os cliques do mouse e a combinação dos cliques com pressionamento de teclas do teclado. Classes Adaptadores: Adapters
  • 34.  Os componentes leves do Swing que estendem JComponent contém o método paintComponent que é chamado quando um componente leve é exibido.  Este método pode ser sobrescrito para alterar a forma como o componente deve ser exibido.  Um componente pode ser opaco ou transparente. O método setOpaque() controla isto.  O método da superclasse (JComponent) deve ser sempre o primeiro a ser chamado no método paintComponent da subclasse.  O método repaint() indica que o componente deve ser atualizado na tela o mais rápido possível. Paineis : JPanel
  • 35.  Os eventos do teclado são tratados por uma classe que implementa KeyListener.  Eventos de teclado são gerados quando teclas são pressionadas e liberadas.  Os métodos keyPressed(), keyReleased() e keyTyped() recebem um KeyEvent como argumento e definem o código para tratamento do evento.  keyPressed() é invocado quando qualquer tecla é pressionada.  keyTyped() é invocado quando uma tecla que não é de ação é invocada (home, end, setas, etc).  keyReleased() é chamado quando a tecla é lançada após um dos métodos anteriores. Eventos do Teclado
  • 36.  Os gerenciadores de layout organizam os componentes GUI em um contêiner para propósito de apresentação.  Os gerenciadores ajudam a organizar os elementos definindo de forma automática as dimensões e posição de cada componente.  Todos os gerenciadores de layout implementam a interface java.awt.LayoutManager.  O método setLayout() da classe Container aceita um objeto que implementa a interface LayoutManager como argumento. Gerenciadores de Layout
  • 37.  Há basicamente três maneiras de organizar componentes em uma GUI.  Posicionamento absoluto: você pode configurar o layout com null e utilizar os métodos setSize e setLocation ou setBounds para configurar cada componente. É mais trabalhoso.  Gerenciadores de layout: posiciona os elementos de forma mais simples e rápida, mas perdemos um pouco o controle sobre as dimensões e posicionamento dos elementos.  Posicionamento visual em uma IDE: algumas IDEs fornecem ferramentas para construir layout com arrastar-e-soltar. Além disto, é possível programar os eventos usando clique duplo sobre os componentes. Neste caso, a IDE gera o código Java necessário. A IDE fornece um controle bom sobre posição, tamanho e alinhamento dos elementos. Gerenciadores de Layout
  • 38.  Há vários gerenciadores de layout. Neste momento focaremos em apenas três deles:  FlowLayout : todos os componentes são colocados em sequência da esquerda para a direita na ordem em que foram adicionados. É o padrão para JPanel.  BorderLayout: organiza os componentes em cinco áreas: NORTH, SOUTH, EAST, WEST, CENTER. É o padrão para JFrame.  GridLayout: organiza os componentes em linhas e colunas. Gerenciadores de Layout
  • 39.  É o gerenciador mais simples. Os componentes são colocados no contêiner da esquerda para a direita na ordem em que foram adicionados. Gerenciador FlowLayout
  • 40.  Organiza os componentes em cinco regiões do contêiner e implementa a interface LayoutManager2.  Limita o contêiner a possuir apenas cinco elementos: um por região.  O componente colocado na região pode ser outro container que contenha outros componentes.  As regiões se expandem de acordo com as características dos componentes inseridos nelas. Gerenciador BorderLayout
  • 41.  A ausência de um componente em um região faz com que a outra região se expanda para ocupar a área da região vazia.  Se nenhuma região for indicada o componente será adicionado ao centro.  Se mais de um componente for inserido em uma região, apenas o último inserido será exibido. Gerenciador BorderLayout
  • 42.  Divide o contêiner em uma grade.  A grade possui linha e colunas.  Todos os componentes da grade tem a mesma altura e largura.  Cada componente é inserido em uma célula da grade. Gerenciador GridLayout
  • 43.  Uma GUI complexa exige que cada componente seja colocado em um local exato.  Estas GUIs, frequentemente, são formadas por múltiplos painéis com os componentes de cada painel organizados em layout específico.  A classe JPanel estende JComponent, e JComponent estende JContainer, então todo JPanel é um Conteiner. Layouts Complexos
  • 44.  Por isto, todo JPanel pode possuir outros componentes, inclusive outros JPanels com o método add().  O JPanel não tem um painel de conteúdo como um JFrame. Neste caso, os componentes são inseridos diretamente no JPanel.  O painel é redimensionado de acordo com as dimensões dos componentes inseridos nele. Layouts Complexos
  • 45.  Um JText fornece uma área para manipular múltiplas linhas de texto. É uma subclasse de JComponent.  Um JText não possui eventos de ação. A tecla ENTER provoca uma quebra de linha dentro do componente.  Um evento externo de outro componente deve ser utilizado para provocar alguma ação com o conteúdo do JText. Áreas de Texto : JText
  • 46.  Um JScrollPane fornece barras de rolagem para componentes.  Um JScrollPane pode utilizar algumas constantes para definir se e quando as barras de rolagem devem aparecer.  JScrollPane.VERTICAL_SCROLLBAR_ALWAYS  JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS  JScrollPane.VERTICAL_SCROLLBAR_NEEDED  JScrollPane.HORIZONTAL_SCROLLBAR_NEEDED  JScrollPane.VERTICAL_SCROLLBAR_NEVER  JScrollPane.HORIZONTAL_SCROLLBAR_NEVER Áreas de Rolagem : JScrollPane
  • 47.  Controles deslizantes permitem selecionar a partir de um intervalo de valores de números inteiros.  Um JSlider horizontal com marcas de medidas e um marcador que permitem a um usuário selecionar um valor.  JSliders podem ser personalizados para exibir marcas de medida principais, marcas de medida secundárias e rótulos para as marcas de medida.  Os JSliders geram ChangeEvents em resposta a interações de usuário.  Um objeto de uma classe que implementa a interface ChangeListener deve declarar o método stateChanged pode responder a ChangeEvents. Controle Deslizante : JSlider
  • 48.  Um JFrame é uma janela com uma barra de título e uma borda.  A classe JFrame é uma subclasse de Frame. Frame é uma subclasse de Window.  Uma janela gerada pelo JFrame é exibida conforme o padrão de janelas do sistema operacional em uso.  Por padrão, quando o usuário fecha uma janela JFrame, ela se torna oculta, mas é possível controlar isto com o método setDefaultCloseOperation(). Janelas : JFrame
  • 49.  A interface WindowConstants que a classe JFrame implementa fornece constantes que podem ser utilizadas para definir o que deve ser feito com a janela quando o usuário fechá-la.  DISPOSE_ON_CLOSE (descartada pelo sistema)  DO_NOTHING_ON_CLOSE (o programa decidirá o que deve ser feito)  HIDE_ON_CLOSE (a janela ficará oculta) Janelas : JFrame
  • 50.  A janela só é exibida quando o método setVisible() é invocado com o argumento true.  O tamanho da janela pode ser configurado com o método setSize() e a localização com o setLocation().  Quando a janela é manipulada pelo usuário, alguns eventos são gerados (WindowEvent).  Os ouvintes de eventos são registrados com o método addWindowListener. Janelas : JFrame
  • 51.  A interface WindowListener fornece sete métodos para tratamento dos eventos da janela.  windowActivated : chamado quando o quando o usuário torna uma janela ativa.  windowClosed : chamado logo depois de a janela ser fechada.  windowClosing: chamado quando o usuário inicia o fechamento da janela  windowDeactivated: chamado quando o usuário torna outra janela a janela ativa.  windowDeiconified: chamado quando o usuário restaura a janela que está minimizada.  windowIconified: chamado quando o usuário minimiza a janela.  windowOpened: chamado quando um programa exibe uma janela pela primeira vez. Janelas : JFrame
  • 52.  Os menus permitem que o usuário realiza ações sem poluir desnecessariamente uma GUI com componentes extras.  Os menus podem ser anexados somente aos objetos das classes que fornecem o método setJMenuBar.  Duas dessas classes são JFrame e JApplet.  As classes utilizadas para declarar menus são: JMenuBar, JMenu, JMenuITem, JCheckBoxMenuItem, JRadioButtonMenuItem. Menus : JMenuBar e JMenu
  • 53.  A classe JMenuBar possui métodos para gerenciar uma barra de menus (conteiner de menus).  A classe JMenu possui métodos para gerenciar menus.  Os menus contém itens de menu e são adicionados a barras de menus ou a outros menus (submenus).  Quando um menu é clicado, ele se expande para mostrar sua lista dos itens de menu.  A classe JMenuITem contém os métodos para gerenciar itens de menu.  Quando um item de menu é selecionado resulta em um evento de ação. Menus : JMenuBar e JMenu
  • 54.  A classe JCheckBoxMenuItem contém métodos para gerenciar itens de menu que podem ser ativados ou desativados.  Uma marca de verificação indica que um item deste tipo menu foi ativado.  A classe JRadioButtonMenuItem contém métodos necessários para gerenciar itens de menu que podem ser ativados ou desativados.  Um círculo aparece para indicar que um item deste tipo de menu foi ativado. Menus : JMenuBar e JMenu
  • 55.  Alguns aplicativos fornecem menus pop-up sensíveis ao contexto.  No Swing, esses menus são criados com a classe JPopupMenu.  Esses menus fornecem opções que são específicas do componente pelo qual o evento de gatilho pop-up foi gerado.  Normalmente, o evento de acionamento pop-up ocorre quando o usuário pressiona e libera o botão direito do mouse. Menu de Contexto : JPopupMenu
  • 56.  Um programa que utiliza componentes AWT do Java assume a aparência e o comportamento da plataforma em que o programa executa.  Às vezes, isto é desejável porque permite que usuários do aplicativo em cada plataforma utilizem componentes com os quais eles já estão acostumados.  Com o Swing podemos personalizar a aparência e o comportamento da interface. Aparência e Comportamento Plugáveis
  • 57.  Muitos aplicativos utilizam uma interface de múltiplos documentos (Multiple-Document Interface).  Estes aplicativos tem uma janela principal (janela-pai) e outras janelas (janelas-filhas), para gerenciar vários documentos abertos e que estão sendo processados em paralelo.  Um processador de texto e um programa de correio eletrônico são exemplos de aplicativos MDI.  As classes JDesktopPane e JInternalFrame são utilizadas para construir interfaces MDI. Interface de Múltiplos Documentos
  • 58.  Um JTabbedFrame organiza componentes GUI em camadas, das quais somente uma é visível por vez.  Os usuários acessam cada camada via uma guia – semelhante a pastas em um gabinete de arquivos.  Quando o usuário clica na guia a camada é exibida. Camadas : JTabbedFrame
  • 59.  Este gerenciador (BoxLayout) organiza os componentes GUI horizontalmente ao longo do eixo x ou verticalmente ao longo do eixo y de um contêiner.  É semelhante ao GridLayout, mas permite que os componentes organizados na grade variem em tamanho e sejam adicionados em qualquer ordem.  Este componente é muito complexo e muito poderoso.  Vale a pena consultar a documentação para aprender de forma objetiva a utilização deste gerenciador.  O GridBagConstraints especifica como um componente é inserido em um GridBagLayout. Gerenciador BoxLayout