Modulo I Swing Básico

Documentos relacionados
Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 1- Interfaces Gráficas com Swing

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

Criando interfaces com o usuário. Continuação

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Marcelo Henrique dos Santos

Arquivos. Prof. Leonardo Barreto Campos 1

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Introdução à Programação Gráfica em Java

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Elaborando as Interfaces Aulas 31, 32 e 33

Programação II. Cassio Diego

Aplicação Linguagem de Programação Orientada a Objeto

JFC/Swing. LPGII - Java Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Layout. Programação Orientada a Objetos Java. Prof. Geraldo Braz Junior. Baseado em material original de João Carlos Pinheiro CEFET/MA

Programação Gráfica em Java Alguns Componentes javax.swing

Interfaces Gráficas com Swing. Professor Leonardo Larback

Gerenciadores de Layout

Interfaces Gráficas (GUIs) em Java usando Swing

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Aula 11: Interfaces gráficas (1/2): elementos de interface Swing

Componentes Parte 01

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates

MANIPULAÇÃO DE EVENTOS

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Programação Orientada a Objetos

Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas (GUIs- Graphical User Interface)

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Introdução à Tecnologia Java 02/2012. Java Aula 04 MDI. 05/09/2012 Celso Olivete Júnior.

Interface Gráficas Parte I. Bruno Crestani Calegaro

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Prof. Responsáveis Wagner Santos C. de Jesus

Elaborando as Interfaces Aulas 43, 44 e 45

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

TIC - Programação Visual. Componentes. Prof. Edwar Saliba Júnior Setembro de Unidade 14 Componentes 1

Interfaces Gráficas POO. Prof. Márcio Delamaro

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA)

Aula 2 Even e to t s d o M ouse

Java First-Tier: Aplicações. Abstract Window Toolkit (AWT) Construção de Interfaces com Swing (I) Swing: Características

Elaborando as Interfaces dos trabalhos das aulas 28, 29 e 30.

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Desenvolvimento de Aplicações Desktop

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Gerenciamento de Layout

Linguagem de Programação II GUI Interface Gráfica com o Usuário

Marcelo Henrique dos Santos

COM220 Aula 17: Interface Gráfica Containers Swing

Interfaces Gráficas (GUIs) em Java usando Swing

Aplicações de Linguagem de Programação Orientada a Objeto

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

Interface com o Usuário (UI) UIs Desacopladas (2/3) BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

MÓDULO 4 SWING Parte 3

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

JAVA. Gerenciadores de Layout. Tiago Alves de Oliveira

Módulo I Interface com usuário GUI

Módulo II Interface com usuário GUI

8. Interfaces Gráficas de Usuário

JMENU, JDESKTOPPANE E JINTERNALFRAME

Componentes Parte 02

Swing Módulo II. Tiago Alves de Oliveira. Tiago Alves de Oliveira 1

Aula 2 Eventos do Mouse by Pearson Education do Brasil

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos

Orientação a Objetos

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Linguagem de programação 2 GUI

Criação de Applets Package: Class Name Base Class: Generate header comments: Can run standalone: Generate Standard methods:

Orientação a Objetos

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

Componentes no Java SE

Java Standard Edition (JSE)

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Programação Orientada a Objetos

Curso Java Starter. 1

Interface Gráfica com o Usuário (GUI) Profa. Isabel Harb Manssour (Material adaptado das aulas da Profa. Luciana Nedel e do Prof.

Programação Orientada a Objetos II

Modulo II Tópicos em Java - Ant

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

Técnicas de Programação II

Elaborando as Interfaces dos trabalhos das aulas 25, 26 e 27.

Escrito por Sex, 14 de Outubro de :26 - Última atualização Seg, 05 de Dezembro de :59

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

Linguagem Java - Prof. Luciana Porcher Nedel 1. Um container genérico e visual. Ela trabalha em cooperação com o controle de layouts.

CONTEÚDO PROGRAMÁTICO

Programação Orientada a Objetos em Java. GUI Graphical User Interface

JFC/Swing. Java Avançado Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing

Transcrição:

Modulo I Swing Básico Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos, Apostila UniverCidade, 2002 The Java Tutorial: A practical guide for programmers Tutorial on-line: http://java.sun.com/docs/books/tutorial Java in a Nutshell David Flanagan, O Reilly & Associates Just Java 2 Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books. Java 1.2 Laura Lemay & Rogers Cadenhead, Editora Campos Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 2 1

Características da Swing O Swing é a biblioteca Java para construção de interfaces gráficas com o usuário. Swing é a sucessora da AWT (Abstract Window Toolkit) Componentes do Swing são implementados sem código nativo maior portabilidade. Algumas características: Aparência (look & feel) facilmente modificável Java 2D API: permite ao desenvolvedor incorporar gráficos 2D, texto e imagens em aplicações e em applets Suporte a tecnologias assessoras (assistive technologies) tais como leitores de tela e displays em Braille. Suporte a Drag & Drop: possível mover componentes entre uma aplicação Java e uma aplicação nativa. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 3 Exemplo de aplicação Swing Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 4 2

Construção de uma aplicação Swing De uma forma geral, uma aplicação Swing contém os seguintes passos. 1. Importação dos pacotes Swing 2. Seleção da aparência ( look & feel ) 3. Definição do contêiner de mais alto nível 4. Definição dos componentes gráficos 5. Adição dos componentes a um contêiner 6. Adição de bordas em componentes 7. Manipulação de eventos Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 5 Importando os pacotes Swing A linha a seguir importa o pacote principal para aplicações Swing: import javax.swing.*; A maioria das aplicações Swing também precisam de dois pacotes AWT: import java.awt.*; import java.awt.event.*; Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 6 3

Selecionando o look & feel Swing permite que o programador escolha a aparência (look & feel) mas apropriada através do método setlookandfeel. Esse método recebe como argumento um nome inteiramente qualificado de uma subclasse de LookAndFeel. Exemplos: UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.windowslookandfeel"); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 7 Windows Look and Feel Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 8 4

Motif Look and Feel Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 9 Java Look and Feel Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 10 5

Definindo o contêiner de mais alto nível Toda aplicação Java que utiliza Swing possui pelo menos um contêiner de alto nível. Para a maioria dos programas os contêineres de alto nível são subclasses de JFrame, JDialog, ou JApplet (para o caso das applets). Um contêiner de alto nível provê o suporte que permite aos demais componentes Swing realizarem seus desenhos e suas manipulações de eventos. A aplicação SwingApplication tem somente um contêiner de alto nível, um JFrame. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 11 Definindo componentes Diversos componentes gráficos podem ser definidos para posteriormente serem adicionados a um contêiner. A aplicação de exemplo SwingApplication contém somente dois componentes: um JButton e um JLabel. Detalhes para o botão: JButton button = new JButton("I'm a button!"); button.setmnemonic(keyevent.vk_i); A primeira linha cria o objeto JButton A segunda linha define a tecla I com sendo a tecla de atalho. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 12 6

Adicionando componentes a um contêiner Uma vez definidos os contêineres e os componentes gráficos, pode-se adicionar cada componente a um contêiner. Na aplicação SwingApplication, um botão e um rótulo são agrupados em um contêiner JPanel antes de adicionar esses componentes ao JFrame: JPanel pane = new JPanel(); pane.setborder(borderfactory.createemptyborder(30, 30, 10, 30)); pane.setlayout(new GridLayout(0, 1)); pane.add(button); pane.add(label); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 13 Adicionando bordas em componentes Em SwingApplication, uma borda é adicionada ao painel. pane.setborder(borderfactory.createemptyborder ( 30, //top 30, //left 10, //bottom 30) //right ); Essa borda adiciona espaços ao redor do conteúdo do painel. 30 pixels extras no topo, à esquerda e à direita; 10 pixels extras abaixo. Bordas são uma características que objetos JPanel herdam da sua superclasse JComponent. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 14 7

Manipulando eventos Manipuladores de eventos são métodos que são associados e determinados eventos que podem ocorrer em um aplicação Swing. Em SwingApplication, são utilizados dois manipuladores de eventos: Um manipula cliques do botão (action event). O outro manipula fechamento da janela (window event). Para o botão: a aplicação deve criar um objeto que implementa a interface ActionListener e registrar esse objeto como um ouvinte (listener) desse botão usando o método addactionlistener Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 15 Manipulando eventos (cont.) Para o botão (cont.): Quando o botão é pressionado, ele dispara um evento, o que resulta na execução do método actionperformed do objeto ouvinte. O argumento para esse método é um objeto ActionEvent que informa acerca do evento e de sua fonte. De uma forma geral: Uma classe X que estiver interessada em processar eventos de ação deve implementar a interface ActionListener. Um objeto de X é registrado com um componente usando o método addactionlistener desse componente. Quando a ação ocorre, o método actionperformed é Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 16 invocado. 8

Manipulando eventos (cont.) No exemplo SwingApplication, o registro do objeto ouvinte é feito através da seguinte chamada: button.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } }); No exemplo acima, o que está em vermelho é chamado de classe interna anônima. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 17 Classes internas Com uso de classe interna public class ListenerSaida extends WindowAdapter { public void windowclosing(windowevent event) { System.exit(0); } } frame.addwindowlistener(new ListenerSaida()); Sem uso de classe interna frame.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent event) { System.exit(0); } }); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 18 9

Manipulando eventos (cont.) Componentes Swing podem gerar muitos tipos de eventos. A seguir, alguns exemplos. Ação que dispara o evento Usuário clica em um botão, pressiona Return enquanto escreve em uma caixa de texto, ou seleciona um item de menu. Usuário fecha um frame (janela principal da aplicação) Usuário pressione o botão do mouse enquanto o cursor está sobre um componente. Usuário move o mouse sobre um componente. Componente se torna visível Componente obtém o foco do teclado Item selecionado muda em uma tabela ou lista Tipo de listener ActionListener WindowListener MouseListener MouseMotionListener ComponentListener FocusListener ListSelectionListener Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 19 Manipulando eventos (cont.) Cada evento é representado por um objeto que fornece informação acerca de sua fonte. Cada componente pode ter vários listeners registrados. Do mesmo modo, um único objeto pode se registrar como listener de diversos componentes. Todos os eventos para cada componente em particular podem ser consultado em: <JavaTutorial>/uiswing/components/index.html Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 20 10

Gerenciadores de Layout Ambientes como o Visual Basic e Delphi usam coordenadas (x,y) para definir a localização de componentes na interface gráfica. Swing usa Gerenciadores de Layout (Layout Managers) Gerenciadores de layout impõem controle acerca de onde os componentes são posicionados. Sem um gerenciador de layout, os componentes podem ser movidos para posições inesperadas quando a tela é redimensionada. Os principais gerenciadores de layout estão Swing descritos a seguir... Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 21 Gerenciadores de Layout (cont.) FlowLayout Componentes posicionados da esquerda para a direita e de cima para baixo Flui para uma nova linha quando necessário. GridLayout Posiciona componentes em uma grade de linhas e colunas Força os componentes a terem o mesmo tamanho BorderLayout Divide o contêiner em 5 seções: North, South, East, West, Center NullLayout O programador é responsável pelo posicionamento de cada componente Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 22 11

Exemplo: GridLayout Posiciona componentes em uma grade de linhas e colunas, onde todas as células são de tamanho igual. Principais Construtores p.setlayout(new GridLayout()); // One row. Columns expand. p.setlayout(new GridLayout(rows, cols)); p.setlayout(new GridLayout(rows, cols, hgap, vgap)); Não se pode escolher aleatoriamente em que célula posicionar um componente. Adicione-os na ordem de cima para baixo e da esquerda para a direita. Conseqüentemente, não é possível deixar uma célula indefinida. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 23 Exemplo: GridLayout Exemplo JPanel content = new JPanel(new GridLayout(2,2)); content.add(new JButton("Button 1")); content.add(new JButton("2")); content.add(new JLabel("")); // para uma célula vazia content.add(new JButton("This is button three")); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 24 12

Gerenciadores de Layout (cont.) Exemplos de layout: Flow e Border Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 25 A classe JComponent A classe JComponent é a superclasse de todos os componentes Swing. Os objetos JButton, JCheckbox, e JTextField são todos exemplos de objetos das subclasses de JComponent. A classe JComponent é uma subclasse direta da classe java.awt.container que, por sua vez, é uma subclasse direta de java.awt.component Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 26 13

Hierarquia JComponent Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 27 A classe JComponent (cont.) Classes definidas no pacote javax.swing e subclasses (diretas ou indiretas) de JComponent: JButton, JLabel JMenu, JMenuItem JTextField JTable JSlider - Simula um slider JProgressBar Exibe o progresso de uma operação demorada. Comportamento comum de um JComponent Definir dimensões Modificar cor Definir fontes Atrelar ajuda de contexto (tool tip) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 28 14

A classe Container Um contêiner (java.awt.container) pode conter outros contêineres (porque todo contêiner é um componente) Objetivo de componente: fornecer vários métodos para adicionar e remover componentes ou para trabalhar com layout. Métodos: void add( Component comp ) void add( Component comp, Object container ) Component[ ] getcomponents() LayoutManager getlayout() void remove( Component comp ) void setlayout( LayoutManager mgr ) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 29 A classe Container (cont.) Swing possui vários componentes que são contêineres de primeiro nível (top-level container) Esse contêineres sao usados como o arcabouço das GUIs: JApplet, JDialog, JFrame, and JWindow Contêineres de primeiro nível possuem um contêiner separado chamado de content pane no qual os subcomponentes são adicionados. Para adicionar um componente a um JApplet, JDialog, JFrame, ou JWindow, você deve primeiro invocar o método getcontentpane e adicionar o componente ao objeto retornado. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 30 15

A classe JFrame Um objeto javax.swing.jframe é uma janela (contêiner de primeiro nível) com bordas e um título. Construtores: JFrame() JFrame(String title) Alguns métodos: setsize(int width, int height) show() getcontentpane() settitle(string) addwindowlistener(windowadapter) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 31 JLabel É usado mais freqüentemente para associar um rótulo a algum componente da interface gráfica. lbltipo = new javax.swing.jlabel(); lbltipo.settext("grupo:"); lbltipo.setbounds(10, 103, 37, 16); requestfocus() Pode também manipular conteúdo HTML Se o texto possuir "<html>...</html>", o conteúdo é apresentado como HTML. JLabel fontes são ignoradas se HTML é usado. Nesse caso, todo o de fontes deve ser realizado através de tags HTML. Deve ser usado <P>, e não <BR>, para forçar uma quebra de linha. O suporte HTML ainda é incipiente. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 32 16

JLabel String labeltext = "<html><font COLOR=WHITE>WHITE</FONT> and " + "<FONT COLOR=GRAY>GRAY</FONT> Text</html>"; JLabel coloredlabel = new JLabel(labelText, JLabel.CENTER);... labeltext = "<html><b>bold</b> and <I>Italic</I> Text</html>"; JLabel boldlabel = new JLabel(labelText, JLabel.CENTER); labeltext = "<html>the Applied Physics Laboratory is..." + "of the Johns Hopkins University." + "<P>" +... "...</html>"; Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 33 JLabel Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 34 17

JTextField Controle correspondente a caixas de texto. Permite a entrada de uma linha de texto. Instanciação txtmarca = new javax.swing.jtextfield(); Principais métodos setbounds(int x, int y, int width, int height) setenabled(boolean) settext(string) String gettext() requestfocus() Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 35 JComboBox Um componente que combina um botão um campo (editável ou não) e uma lista drop-down. Principais métodos void setbounds(int x, int y, int width, int height) void requestfocus() void setenabled(boolean) int getselectedindex() void setselectedindex(int) void removeallitems() void additem(string) String getselecteditem() void getselecteditem(string) void addactionlistener (ActionListener) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 36 18

JButton Instanciação (exemplos) JButton btnok = new javax.swing.jbutton(); JButton proximo = new JButton(new ImageIcon("right.gif")); JButton proximo = new JButton("Next", rightarrow); Principais métodos void settext(string) void settooltiptext(string) void addactionlistener(actionlistener) void setbounds(int x, int y, int width, int height) void setvisible(boolean) void setenabled(boolean) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 37 Aplicações MDI MDI: Multiple Document Interface Programa tem uma janela de desktop que contém as demais janelas. As janelas filhas podem ser minimizadas e movidas dentro do desktop, mas não removidas. Se o desktop for minimizado, todas as janelas filhas também o são. Suporte para MDI no Swing JDesktopPane Serve como a janela mãe (desktop) das demais janelas. JInternalFrame Semelhante a um frame, exceto que ele está restringido a permanecer dentro do objeto JDesktopPane. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 38 19

JInternalFrame É um contêiner para ser utilizado em aplicações MDI. Construtor principal public JInternalFrame(String title, boolean resizable, boolean closeable, boolean maximizable, boolean iconifiable) Outros contrutores úteis JInternalFrame() JInternalFrame( String title ) JInternalFrame( String title, boolean resizable ) JInternalFrame( String title, boolean resizable, boolean closable) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 39 JInternalFrame Outros métodos: movetofront() movetoback() setlocation (int x, int y) setsize(int largura, int comprimento); setminimumsize(new Dimension(largura, comprimento)); settitle(string); setmaximizable(boolean); seticonifiable(boolean); setclosable(boolean); setresizable(boolean); setjmenubar(jmenubar) pack() Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 40 20

JDesktopPane Um objeto JDesktopPane é um contêiner para construir uma aplicação de múltiplos documento (MDI) Serve como a janela mãe (desktop) das demais janelas. Um objeto JDesktopPane pode conter diversos objetos JInternalFrame. Principais métodos add(jinternalframe) cascadeframes() Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 41 Trabalhando com menus Podemos incrementar uma aplicação com o uso de menus suspensos. As classes do Swing a serem utilizadas são JMenuBar, JMenu e JMenuItem. JMenuBar: uma barra de menus. JMenu: cada um dos menus suspenso que podem ser pendurados em uma barra de menus. JMenuItem: cada opção que pode ser adicionada a um menu. Principal construtor de JMenu: private JMenu menucadastros = new JMenu("Cadastros"); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 42 21

JMenuBar // Criando o objeto JMenuBar private JMenuBar menubar = new JMenuBar();... // Adicionando objetos JMenu ao objeto JMenuBar menubar.add(menuvenda);... // Adicionando um menu de gerenciamento de janelas à barra de menus. menubar.add(new WindowMenu(desktop)); // Adicionando a barra de menus à aplicação MDI (JFrame) setjmenubar(menubar); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 43 JMenu // Criando o objeto JMenu JMenu menuvenda = new JMenu("Venda");... //Adicionando objetos JMenuItem ao objeto JMenu menuvenda.add(menuefetuarvenda);... // Adicionando um separador de itens ao objeto JMenu. menuvenda.addseparator();... // Adicionando um mnemônico menuvenda.setmnemonic('v');... Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 44 22

JMenuItem // Criando o objeto JMenuItem private JMenuItem menuefetuarvenda = new JMenuItem("Venda...");... // Adicionando um mnemônico menuvenda.setmnemonic('v');... ks = KeyStroke.getKeyStroke(KeyEvent.VK_X,ActionEvent.ALT_MASK) menusistemasair.setaccelerator(ks);... // Definindo um listener para o objeto JMenuItem. menuefetuarvenda.addactionlistener(new ActionListener() { public void actionperformed(actionevent ae) { /* Código a ser executado quando o ** usuário clica no item de menu.*/ } }); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 45 JMenuBar, JMenu, JMenuItem Típico código para manipulação de menus: menubar.add(menuvenda); menuvenda.add(menuefetuarvenda); menuefetuarvenda.addactionlistener(new ActionListener() { public void actionperformed(actionevent ae) { // Código do item de menu. } }); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 46 23

JOptionPane Classe que permite exibir diferentes tipos de caixas de diálogo. Cinco métodos estáticos principais JOptionPane.showMessageDialog Icon, message, OK button JOptionPane.showConfirmDialog Icon, message, and buttons: OK, OK/Cancel, Yes/No, or Yes/No/Cancel JOptionPane.showInputDialog (2 versões) Icon, message, textfield or combo box, buttons JOptionPane.showOptionDialog Icon, message, array de butões ou de outros componentes Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 47 JOptionPane (cont.) Exemplo de uso de JOptionPane JOptionPane.showMessageDialog(null, "no data found for " + parameter); Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 48 24

JOptionPane Message Dialogs (Windows L&F) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 49 JOptionPane: Confirmation Dialogs (Java L&F) Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 50 25

JToolBar Similar a uma painel para botões. Dockable: pode ser arrastada. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 51 Outros componentes Swing JCheckBox JRadioButton Use um ButtonGroup para agrupar botões de rádio. JPasswordField JTextArea Para edição de grandes trechos de texto Acople a um JScrollPane para adicionar rolagem JFileChooser Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 52 26

Conclusões Componentes essenciais de uma aplicação Swing: Contêiners são janelas ou painéis que contêm componentes. Layouts especificam como arranjar componentes em um contêiner. Componentes: são os controles da interface gráfica com o usuário. Ouvintes (listeners) são conectados a componentes e contém o código que é executado quando o componente é usado. É desse modo que uma ação do usuário sobre um componente é conectada a um método Java. Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 53 Conclusões Alguns IDEs têm eles próprios facilidades de construção da interface gráfica (editores de formulários) e.g. NetBeans - www.netbeans.org Também há ferramentas específicas para a criação de GUIs em Java. Exemplos são: XUI - http://xui.sourceforge.net/ UICompiler - http://uic.sourceforge.net/ Julho 06 Prof(s). Eduardo Bezerra & Ismael H. F. Santos 54 27