60
LPV gabriel jesus COMPONENTES SWING

Apresentação-Resumo sobre o Java Swing

Embed Size (px)

DESCRIPTION

Apresentação-Resumo sobre o Java Swing.

Citation preview

Page 1: Apresentação-Resumo sobre o Java Swing

LPV gabriel jesus

COMPONENTES SWING

Page 2: Apresentação-Resumo sobre o Java Swing

Java Como Programar 8ª Ed ição

RESUMO BASEADO NO LIVRO

Page 3: Apresentação-Resumo sobre o Java Swing

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

Page 4: Apresentação-Resumo sobre o Java Swing

É 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

Page 5: Apresentação-Resumo sobre o Java Swing

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

Page 6: Apresentação-Resumo sobre o Java 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

Page 7: Apresentação-Resumo sobre o Java 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

Page 8: Apresentação-Resumo sobre o Java 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

Page 9: Apresentação-Resumo sobre o Java Swing

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

Page 10: Apresentação-Resumo sobre o Java Swing

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

Page 11: Apresentação-Resumo sobre o Java Swing

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

Page 12: Apresentação-Resumo sobre o Java Swing

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

Page 13: Apresentação-Resumo sobre o Java Swing

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

Page 14: Apresentação-Resumo sobre o Java Swing

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

Page 15: Apresentação-Resumo sobre o Java Swing

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

Page 16: Apresentação-Resumo sobre o Java Swing

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

Page 17: Apresentação-Resumo sobre o Java Swing

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

Page 18: Apresentação-Resumo sobre o Java Swing

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

Page 19: Apresentação-Resumo sobre o Java Swing

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

Page 20: Apresentação-Resumo sobre o Java Swing

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

Page 21: Apresentação-Resumo sobre o Java Swing

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

Page 22: Apresentação-Resumo sobre o Java Swing

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

Page 23: Apresentação-Resumo sobre o Java Swing

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

Page 24: Apresentação-Resumo sobre o Java Swing

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

Page 25: Apresentação-Resumo sobre o Java Swing

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

Page 26: Apresentação-Resumo sobre o Java Swing

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

Page 27: Apresentação-Resumo sobre o Java Swing

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

Page 28: Apresentação-Resumo sobre o Java Swing

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

Page 29: Apresentação-Resumo sobre o Java Swing

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

Page 30: Apresentação-Resumo sobre o Java Swing

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

Page 31: Apresentação-Resumo sobre o Java Swing

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

Page 32: Apresentação-Resumo sobre o Java Swing

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

Page 33: Apresentação-Resumo sobre o Java Swing

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

Page 34: Apresentação-Resumo sobre o Java Swing

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

Page 35: Apresentação-Resumo sobre o Java Swing

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

Page 36: Apresentação-Resumo sobre o Java Swing

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

Page 37: Apresentação-Resumo sobre o Java Swing

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

Page 38: Apresentação-Resumo sobre o Java Swing

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

Page 39: Apresentação-Resumo sobre o Java Swing

É 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

Page 40: Apresentação-Resumo sobre o Java Swing

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

Page 41: Apresentação-Resumo sobre o Java Swing

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

Page 42: Apresentação-Resumo sobre o Java Swing

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

Page 43: Apresentação-Resumo sobre o Java Swing

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

Page 44: Apresentação-Resumo sobre o Java Swing

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

Page 45: Apresentação-Resumo sobre o Java Swing

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

Page 46: Apresentação-Resumo sobre o Java Swing

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

Page 47: Apresentação-Resumo sobre o Java Swing

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

Page 48: Apresentação-Resumo sobre o Java Swing

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

Page 49: Apresentação-Resumo sobre o Java Swing

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

Page 50: Apresentação-Resumo sobre o Java Swing

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

Page 51: Apresentação-Resumo sobre o Java Swing

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

Page 52: Apresentação-Resumo sobre o Java Swing

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

Page 53: Apresentação-Resumo sobre o Java Swing

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

Page 54: Apresentação-Resumo sobre o Java Swing

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

Page 55: Apresentação-Resumo sobre o Java Swing

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

Page 56: Apresentação-Resumo sobre o Java Swing

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

Page 57: Apresentação-Resumo sobre o Java Swing

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

Page 58: Apresentação-Resumo sobre o Java Swing

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

Page 59: Apresentação-Resumo sobre o Java Swing

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

Page 60: Apresentação-Resumo sobre o Java Swing

[email protected]

Dúvidas e Observações