Baixe o app para aproveitar ainda mais
Prévia do material em texto
LPV gabriel jesus COMPONENTES SWING Java Como Programar 8ª Ed içã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 oumais 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çãodos 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 janelaa 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 Componentes�SWING RESUMO�BASEADO NO LIVRO Introdução JOptionPane Componentes Swing Componentes Swing Componentes Swing A Janela e seus Componentes A Janela e seus Componentes A Janela e seus Componentes Eventos JTextField e JPasswordField JTextField e JPasswordField Tipos de Eventos e Interfaces Tipos de Eventos e Interfaces Tipos de Eventos e Interfaces Tipos de Eventos e Interfaces Botões de Acão : JButton Botões de Acão : JButton Botões de Estado: JCheckBox Botões de Estado: JRadionButton Caixa de Combinação: JComboBox Listas : JList Listas : JList Eventos de Mouse Eventos de Mouse Eventos de Mouse Eventos de Mouse Eventos de Mouse Eventos de Mouse Classes Adaptadores: Adapters Classes Adaptadores: Adapters Classes Adaptadores: Adapters Paineis : JPanel Eventos do Teclado Gerenciadores de Layout Gerenciadores de Layout Gerenciadores de Layout Gerenciador FlowLayout Gerenciador BorderLayout Gerenciador BorderLayout Gerenciador GridLayout Layouts Complexos Layouts Complexos Áreas de Texto : JText Áreas de Rolagem : JScrollPane Controle Deslizante : JSlider Janelas : JFrame Janelas : JFrame Janelas : JFrame Janelas : JFrame Menus : JMenuBar e JMenu Menus : JMenuBar e JMenu Menus : JMenuBar e JMenu Menu de Contexto : JPopupMenu Aparência e Comportamento Plugáveis Interface de Múltiplos Documentos Camadas : JTabbedFrame Gerenciador BoxLayout Dúvidas e Observações
Compartilhar