Interfaces Gracas em Java

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

MÓDULO 4 SWING Parte 3

8. Interfaces Gráficas de Usuário

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

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

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

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

Pacote Java Swing Parte 1

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

Objectivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

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

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

Interface Gráfica. Prof. Marcelo Cohen. (material da Profa. Luciana Nedel) Graphical User Interface (GUI)

Entender princípios de projeto. Capacitação para construir GUIs. Entender os pacotes que contém componentes de GUI, e as classes e interfaces de

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

Interface Gráficas Parte I. Bruno Crestani Calegaro

Tratamento de Eventos

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

Programação Visual em Java

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

Programação Orientada a Objetos

Programação Orientada a Objetos II

Desenvolvimento de Aplicações Desktop

Interface Gráfica. Prof. Marcelo Cohen

Curso de Aprendizado Industrial Desenvolvedor WEB

Construção de Interfaces Gráficas

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Gerenciadores de Layouts

Interface Gráfica 2. E/S pode ser feita por interface gráfica Biblioteca Swing. javax.swing.*

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

Técnicas de Programação II

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

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

Construção de Interfaces Gráficas - Introdução

Capítulo 12 Eventos de interacção

API Swing Java. 1. Introdução. 2. Objetivos. 3. Surgimento do Swing. André Scarmagnani 1, Matheus Madalozzo 1, Miguel Diogenes Matrakas 1

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

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

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

Programação Java. Construção de Interfaces com Swing (I)

JCheckbox JRadioButton JComboBox JList JMenu... Alguns componentes já vistos em aula JButton JLabel JTextField

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Natureza do Software e dos Sistemas

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

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

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

Curso Java Starter. 1

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

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: imagecomposite FACULDADE DE TECNOLOGIA SENAC PELOTAS

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

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

Aplicações Gráficas com AWT

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

Gestão de eventos do Rato e teclado

Programação Gráfica em Java.

Programação por Objectos. Interfaces gráficas. Swing 1/52

Curso de Java Módulo II Swing Fábio Mengue Centro de Computação - Unicamp

Jogo Da Velha. - Parte 1 - Fazendo a parte gráfica do jogo da Velha

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

Gerenciamento de Layout

Especialização em Engenharia de Software - CEUT

Is Event Dispatcher Threade (Animation)

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

Componentes da Interface Gráfica da Linguagem Java

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

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

Programação Orientada a Objetos II

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

Exercícios 07 Introdução à POO (Interface Gráfica)

Interfaces Gráficas com Swing. Professor Leonardo Larback

Como construir aplicaçõ e applets

Introdução a programação gráfica em Java com Swing

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Programando GUIs

Gerenciadores de Layout

Roteiro para criação de Applet

Java Linguagem de programação

Interface Gráfica. GUI (Graphic User Interface) AWT e Swing Containers e componentes Layouts. Linguagem Java - Prof. Luciana Porcher Nedel 1

CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I E J

Como usar a documentaçã

Sumário Introdução à 3a. Edição Introdução Dia 1 - Conceitos Iniciais Dia 2 - Bem-vindo ao Mundo Real... 43

Transcrição:

Interfaces Gracas em Java Sumario I SWING generalidades I Componentes e Contentores I Modelo de eventos I Gestores de Colocac~ao I Componentes e Contentores com exemplos Rui Camacho

Bibliograa I The Java Tutorial, Trail: Creating a GUI with JFC/Swing I \Java How to Program", Deitel & Deitel, (captulo 12) I The Java API

Sugest~oes para estudar/praticar I http://developer.java.sun.com/developer/onlinetraining/ I ver os exemplos que v^em com o JDK (directorio demo) I ver exemplos (downloadable) do livro de Deitel & Deitel

Java Foundation Classes (JFC) conjunto de APIs na tentativa de tornar o Java uma linguagem para aplicac~oes empresarais completas JFC e composta por 5 APIs: I AWT I Java 2D I Acessibilidade I Drag and Drop I Swing AWT Abstract Windowing Toolkit

Swing resumo I Widgets do Swing extendem os do AWT I O modelo de eventos do AWT continua a ser usado I Baseado em Componentes (e Contentores) I suporta os componentes do AWT mais outros (ex JComponent) I Drag and Drop Support - troca de informac~ao entre aplicac~oes noutra API do JFC I Utiliza componentes lightweight (n~ao dependentes de componentes nativos) I Utiliza uma variante da arquitectura Model View Controller (MVC) I Tem Pluggable Look And Feel (PLAF) - visual das janelas conguravel I Utiliza o Delegation Event Model

Porqu^e Swing I AWT n~ao e sucientemente funcional para aplicac~oes industriais a biblioteca de widgets e pequena os widgets so disp~oem de funcionalidades basicas extens~oes s~ao habitualmente necessarias I componentes AWT dependem de componentes correspondentes nativos I widgets n~ao t^em exactamente o mesmo comportamento em diferentes plataformas AWT { Abstract Windowing Toolkit Rui Camacho

Pacotes importantes I javax.swing - new GUI tools com novos componentes... I javax.border - classes para desenhar contornos nos componentes I javax.swing.colorchooser - classes para escolha de cores I javax.swing.event - classe para novos modelos de eventos I javax.swing.lechooser - classes para escolha de cheiros I javax.swing.plaf.* - classes for the Pluggable Look and Feel I javax.swing.text - manipulac~ao de texto I... I javax.accessibility - for disabled-persons accessibility

Componente uteis

Componentes Heavyweight I Usados pelo AWT I Rectangulares I Opacos I S~ao sempre desenhados em cima de componentes lightweight I Dependem de congeneres nativos I Look and Feel depedente do sistema operativo (SO) I funcionalidade determinada pelo SO I mais rapidos porque o SO realiza o trabalho

Componentes Lightweight I Podem ter partes transparentes I Podem tomar qualquer forma I Podem-se sobrep^or entre eles I Eventos do rato ocorrem atraves das partes transparentes I N~ao depedem de congeneres nativos I Look and Feel desenhado em tempo de execuc~ao pelo que funcionalidades s~ao o mesmo em todas as plataformas. Mais lento por que o Java tem que fazer o trabalho.

Interface Graca basica import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestaJFramef g public static void main(string s[])f JFrame frame = new JFrame("Exemplo de JFrame"); Container c = frame.getcontentpane(); c.setbackground( Color.yellow ); c.add(new JButton(\botao"), BorderLayout.SOUTH); c.add(new JLabel(\Frase para o JLabel")); frame.addwindowlistener( new WindowAdapter() f // listener para terminar qd fecha janela public void windowclosing(windowevent event)f System.exit(0);g g ); frame.setsize(400,400); frame.show(); g Rui Camacho

Resultado da Interface Graca basica

I Contentores de topo - onde os outros componentes se desenham JFrame, JDialog, JApplet I Contentores Intermedios- facilitam arranjo de outros JPanel, JScrollPane, JTabbedPane I Componentes atomicos - apresentam informac~ao JButton, JComboBox, JTextField, Jtable I Criac~ao de Componentes I criac~ao do objecto I alterac~ao dos atributos I (para contentores) associac~ao de um gestor de colocac~oes (Layout Manager) I associac~ao de um gestor de eventos e programac~ao de comportamentos I (se n~ao e contentor de topo) adicionar a um contentor Rui Camacho Elementos da Interface Graca

do tutorial: http://developer.java.sun.com/developer/onlinetraining/gui/swing1/ Rui Camacho Swing hierarquia de componentes (semelhantes aos de AWT)

do tutorial: http://developer.java.sun.com/developer/onlinetraining/gui/swing1/ Rui Camacho Swing hierarquia de componentes \novos"

Hierarquia de componentes comuns do Swing java.lang.object " java.awt.component " java.awt.container " javax.swing. JComponent

Model / View / Controller Elementos independentes: I Model I dados de estado para cada componente I dados diferentes para modelos diferentes I View I \visual" do componente no ecr~a I Controller I como o componente reage a eventos

Comunicac~ao em MVC

Exemplo de MVC

MVC em Java I Swing usa o model-delegate design, uma arquitectura semelhante ao MVC. I O View e Controller s~ao combinados no UI delegate uma vez que o Java trata a maioria do seventos como o AWT. I Multiplas views podem ser usados com um unico modelo. I Mudancas num unico modelo podem afectar varias views. I Os componentes podem partilhar um modelo (JScrollbar e JSlider partilham o BoundedRangeModel).

MVC em Java

Swing Eventos I EventObject I objecto com informac~ao sobre evento (inclui id fonte) I fontes de eventos: componentes I Object getsource() Returns the object that red the event I Tipos de eventos I eventos de baixo nvel I ex: eventos do rato e do teclado, resultados de entradas do utilizador I eventos sem^anticos I ex: eventos de acc~ao e de selecc~ao, com denic~ao dependente do componente I Tratamento: dirigido pelos eventos sem^anticos I independentes da plataforma e do "look and feel" I independentes da composic~ao do objecto gerador Rui Camacho

Tratar Eventos I Tratar eventos I associar atendedores as fontes de eventos I cada fonte pode ter varios atendedores I cada atendedor pode tratar eventos de varias fontes I Usar um atendedor de eventos I denir classe que implementa um Listener ou extende classe que o implementa I public class UmaClasse implements ActionListener f... I Registar uma inst^ancia do gestor como atendedor de um ou mais componentes I umcomponente.addactionlistener(instanciadeumaclasse) I escrever codigo para os metodos da interface do Listener I public void actionperformed(actionevent e) f...

do livro Deitel & Deitel Rui Camacho Registar um Event handler

Atendedores de Eventos I Cada tipo de atendedor tem uma interface denida I interface tem metodos para todos os eventos que o atendedor pode tratar I atendedor especco tem de implementar todos os metodos I metodos para eventos irrelevantes podem ter corpo vazio I em vez de usar interface: usar adaptador I classe que implementa a interface e fornece metodos por omiss~ao I subclasse desta so tem de denir os metodos a que quer dar conteudo proprio

Atendedores de Eventos I Classe do atendedor pode ser interna I classe interna tem acesso a atributos privados da classe I no exemplo: class QuitListener implements ActionListener f I Classe do atendedor pode ser anonima I desnecessario criar nome para classe que se dene para criar 1 so inst^ancia I no exemplo: combo.addactionlistener( new ActionListener () f public void actionperformed(actionevent e) f...gg)

Exemplos de Atendedores // classes embutidas ("nested") class QuitListener implements ActionListener f public void actionperformed(actionevent e) f System.exit(0); g g class ClickListener implements ActionListener f public void actionperformed(actionevent e) f numclicks++; etiqueta.settext(labelprex + numclicks); g g

Delegation Event Model o Swing e baseado no Delegation Event Model do JDK 1.1 I No JDK 1.0 so as classes dos componentes t^em metodos para tratar eventos, e por isso nenhum outro objecto pode tratar eventos. I Metodos de tratamento e eventos de componentes s~ao sbstituidos por interfaces de event listener classes de adaptac~ao I Qualquer classe pode usar listener interfaces ou adapter classes.

Modelo de eventos do JDK 1.0 I programas t^em que extender os componentes GUI e sobrep^or action() ou handleevent() I s~ao necessarias muitas classes I eventos s~ao propagados pela hierarquia acima do GUI ate serem consumidos ou atingirem a raiz I eventos para a hierarquia podem ser tratados por um container (e necessario uma instruc~ao condicional complexa)

Problemas com o modelo de eventos do JDK 1.0 I extender a classe de um componente sem mudar nada e redundante e enfadonho I n~ao e possvel separar o modelo da aplicac~ao do GUI (n~ao ha MVC) I complicado processar tipos diferentes de eventos uma vez que os eventos s~ao tratados pelos mesmos metodos I events s~ao entregues aos componentes quer os componentes os processem ou n~ao

JDK 1.1 Event Listeners I objectos que implementam uma interface EventListener especca por extens~ao do generico java.util.eventlistener I dene os metodos que pode ser invocados pela fonte de eventos em resposta a cada tipo de evento especco tratado pela interface

I Baixo nvel I java.awt.event.focusevent (componente recebeu focus, perda de focus) Rui Camacho I entrada de baixo nvel ou uma ocorr^encia janela-sistema num componente visual no ecr~a I java.awt.event.componentevent (redimensionamento de componente, movido, etc.) I java.awt.event.keyevent (componente recebeu key-press, key-release, etc.) I java.awt.event.mouseevent (componente recebeu mouse-down, mouse-move, etc.)

Tipos de Eventos I Sem^anticos I relacionados com a sem^antica do modelo de componentes de uma interface com o utilizador I java.awt.event.actionevent ("executa comando") I java.awt.event.adjustmentevent ("valor do componente ajustado") I java.awt.event.itemevent ("estado de um item modou") I java.awt.event.textevent ("o valor do texto mudou")

Fontes de Eventos I Multiplos atendedores de eventos podem ser atribuidos a uma fonte (ordem n~ao e garantida) I Baixo nvel I java.awt.component I addcomponentlistener ( ComponentListener l) I addmouselistener ( MouseListener l) I addmousemotionlistener ( MouseMotionListener l) I Sem^antico I java.awt.list I addactionlistener ( ActionListener l) I additemlistener ( ActionListener l)

Classes de Adaptadores Estas podem ser extendidads em vez de se usar interfaces, quando o interface tem muitos metodos n~ao usados (ex: MouseMotionListener). As classes Adapter: I java.awt.event.componentadapter I java.awt.event.containeradapter I java.awt.event.focusadapter I java.awt.event.keyadapter I java.awt.event.mouseadapter I java.awt.event.mousemotionadapter I java.awt.event.windowadapter

Layout Managers I arranjam os widgets de acordo com um padr~ao I podem actualizar os contentores para suportar redimensionamento do contentor ou componentes internos I tornam possvel a elaborac~ao de UIs complexos

Swing Gestor de Colocac~ao I Determina o arranjo dos componentes I tamanho e posic~ao dos componentes nos contentores I Variantes de Gestor: I BorderLayout, BoxLayout, FlowLayout, GridBagLayout, GridLayout, CardLayout NORTH I BorderLayout WETS CENTER EAST SOUTH I BoxLayout: componentes em linha I FlowLayout: componentes por ordem em linhas I GridLayout: componentes do mesmo tamanho, em linhas e colunas I GridBagLayout: componentes em linhas e colunas, tamanhos exveis Rui Camacho

Flow Layout I Arranja os componentes da esquerda para a direita e do cimo para baixo I Coloca tantos componentes numa linha quanto possivel antes de passar a linha seguinte I deixa o utilizador especicar o alinhamentoe espacamento horizontal e vertical toolbar.setlayout(new FlowLayout(FlowLayout.LEFT)); toolbar.add(playbutton); toolbar.add(stopbutton);

Border Layout I Dsitribui os componentes pelos bordos ou centro I NORTH I SOUTH I EAST I WEST I CENTER I permite especicar espacamento horizontal e vertical contentpanel.setlayout(new BorderLayout(0,0)); contentpanel.add(\center", opanel); contentpanel.add(\south, controlpanel);

Grid Layout I Distribui os components numa grelha com um numero de colunas e linahs especicado I linhas t^em a mesma altura e colunas a mesma largura contentpanel.setlayout(new GridLayout(2,4)); contentpanel.add(startbutton, 0, 0); contentpanel.add(stopbutton, 1, 3);

JLabel { exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class LabelTest extends JFrame f private JLabel label1, label2, label3; public LabelTest()f // constroi o GUI super( "Testing JLabel" ); Container container = getcontentpane(); // obtem area colocar componentes container.setlayout( new FlowLayout() ); label1 = new JLabel( "Label with text" ); // construtor com argumento String label1.settooltiptext( "This is label1" ); container.add( label1 ); Icon bug = new ImageIcon("bug1.gif"); label2 = new JLabel( "Label with text and icon", bug, SwingConstants.LEFT ); // constr label2.settooltiptext( "This is label2" ); container.add( label2 ); Rui Camacho do livro Deitel Complementos & Deitel de Programac~ao e Algoritmos { LEIC

do livro Deitel & Deitel Rui Camacho JLabel { exemplo continuac~ao label3 = new JLabel(); // construtor sem argumentos label3.settext( "Label with icon and text at bottom" ); label3.seticon( bug ); label3.sethorizontaltextposition( SwingConstants.CENTER ); label3.setverticaltextposition( SwingConstants.BOTTOM ); label3.settooltiptext( "This is label3" ); container.add( label3 ); setsize( 275, 170 ); setvisible( true ); g public static void main( String args[] ) f // executar a apliaccao LabelTest application = new LabelTest(); application.setdefaultcloseoperation(jframe.exit ON CLOSE ); g g // m da classe LabelTest

do livro Deitel & Deitel Rui Camacho JTextField { exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TextFieldTest extends JFrame f private JTextField textfield1, textfield2, textfield3; private JPasswordField passwordfield; public TextFieldTest() f // constroi o GUI super( "Testing JTextField and JPasswordField" ); Container container = getcontentpane(); container.setlayout( new FlowLayout() ); textfield1 = new JTextField( 10 ); container.add( textfield1 ); textfield2 = new JTextField( "Enter text here" ); container.add( textfield2 );

public static void main( String args[] ) f // executar a apliaccao TextFieldTest application = new TextFieldTest(); application.setdefaultcloseoperation(jframe.exit ON CLOSE); g Rui Camacho JTextField { exemplo continuac~ao textfield3 = new JTextField( "Uneditable text eld", 20 ); textfield3.seteditable( false ); container.add( textfield3 ); passwordfield = new JPasswordField( "Hidden text" ); container.add( passwordfield ); TextFieldHandler handler = new TextFieldHandler(); // registar o handler textfield1.addactionlistener( handler ); textfield2.addactionlistener( handler ); textfield3.addactionlistener( handler ); passwordfield.addactionlistener( handler ); setsize( 325, 100 ); setvisible( true ); g

do livro Deitel & Deitel Rui Camacho JTextField { exemplo continuac~ao private class TextFieldHandler implements ActionListener f //classe privada interna public void actionperformed( ActionEvent event )f // procesa os eventos String string = ""; if ( event.getsource() == textfield1 ) string = "textfield1: " + event.getactioncommand(); else if ( event.getsource() == textfield2 ) string = "textfield2: " + event.getactioncommand(); else if ( event.getsource() == textfield3 ) string = "textfield3: " + event.getactioncommand(); else if ( event.getsource() == passwordfield ) f JPasswordField pwd = (JPasswordField) event.getsource(); string = "passwordfield: " + new String(passwordField.getPassword()); g JOptionPane.showMessageDialog( null, string ); g g // m da classe privada interna TextFieldHandler g // m da classe TextFieldTest

JButton { exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonTest extends JFrame f private JButton plainbutton, fancybutton; public ButtonTest()f // cnstruir o GUI super( "Testing Buttons" ); Container container = getcontentpane(); container.setlayout( new FlowLayout() ); // criar os botoes plainbutton = new JButton( "Plain Button" ); container.add( plainbutton ); do livro Deitel & Deitel

JButton { exemplo continuac~ao Icon bug1 = new ImageIcon( "bug1.gif" ); Icon bug2 = new ImageIcon( "bug2.gif" ); fancybutton = new JButton( "Fancy Button", bug1 ); fancybutton.setrollovericon( bug2 ); container.add( fancybutton ); ButtonHandler handler = new ButtonHandler(); // event handler para os botoes fancybutton.addactionlistener( handler ); plainbutton.addactionlistener( handler ); setsize( 275, 100 ); setvisible( true ); g public static void main( String args[] ) f ButtonTest application = new ButtonTest(); application.setdefaultcloseoperation(jframe.exit ON CLOSE); g do livro Deitel & Deitel Rui Camacho

JButton { exemplo continuac~ao private class ButtonHandler implements ActionListener f public void actionperformed( ActionEvent event )f JOptionPane.showMessageDialog(null,"You pressed: "+event.getactioncommand()); g g // m da classe privada interna ButtonHandler g // m da classe ButtonTest do livro Deitel & Deitel

JRadioButton exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class RadioButtonTest extends JFrame f private JTextField eld; private Font plainfont, boldfont, italicfont, bolditalicfont; private JRadioButton plainbutton, boldbutton, italicbutton, bolditalicbutton; private ButtonGroup radiogroup; do livro Deitel & Deitel

JRadioButton exemplo continuac~ao public RadioButtonTest()f // cria a GUI super( "RadioButton Test" ); Container container = getcontentpane(); // obtem area para colocacao componen container.setlayout( new FlowLayout() ); // escolhe layout eld = new JTextField("Watch the font style change", 25); container.add( eld ); // criar os botoes plainbutton = new JRadioButton("Plain", true); container.add(plainbutton); boldbutton = new JRadioButton( "Bold", false ); container.add( boldbutton ); italicbutton = new JRadioButton( "Italic", false ); container.add( italicbutton ); bolditalicbutton = new JRadioButton("Bold/Italic", false); container.add(bolditalicbutton); Rui Camacho

do livro Deitel & Deitel Rui Camacho JRadioButton exemplo continuac~ao // registar o handler para os botoes RadioButtonHandler handler = new RadioButtonHandler(); plainbutton.additemlistener( handler ); boldbutton.additemlistener( handler ); italicbutton.additemlistener( handler ); bolditalicbutton.additemlistener( handler ); // criar a relacao entre os botoes de um JRadioButtons radiogroup = new ButtonGroup(); radiogroup.add( plainbutton ); radiogroup.add( boldbutton ); radiogroup.add( italicbutton ); radiogroup.add( bolditalicbutton );

JRadioButton exemplo continuac~ao // criar objectos tipo font plainfont = new Font( "Serif", Font.PLAIN, 14 ); boldfont = new Font( "Serif", Font.BOLD, 14 ); italicfont = new Font( "Serif", Font.ITALIC, 14 ); bolditalicfont = new Font( "Serif", Font.BOLD + Font.ITALIC, 14 ); eld.setfont( plainfont ); setsize( 300, 100 ); setvisible( true ); g do livro Deitel & Deitel

do livro Deitel & Deitel Rui Camacho JRadioButton exemplo continuac~ao public static void main( String args[] ) f // executar a aplicacao RadioButtonTest application = new RadioButtonTest(); application.setdefaultcloseoperation(jframe.exit ON CLOSE ); g private class RadioButtonHandler implements ItemListener f public void itemstatechanged( ItemEvent event ) f // processar eventos if ( event.getsource() == plainbutton ) // click no plainbutton eld.setfont( plainfont ); else if ( event.getsource() == boldbutton ) // click no boldbutton eld.setfont( boldfont ); else if ( event.getsource() == italicbutton ) // click no italicbutton eld.setfont( italicfont ); else if ( event.getsource() == bolditalicbutton ) // click no bolditalicbutton eld.setfont( bolditalicfont ); g g // m da classe privada RadioButtonHandler g // m da classe RadioButtonTest

JComboBox exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ComboBoxTest extends JFrame f private JComboBox imagescombobox; private JLabel label; private String names[] = f"bug1.gif","bug2.gif", "travelbug.gif","buganim.gif" g; private Icon icons[] = f new ImageIcon(names[0]), new ImageIcon(names[1]), new ImageIcon(names[2]), new ImageIcon(names[3]) g; do livro Deitel & Deitel

JComboBox exemplo continuac~ao public ComboBoxTest() f // construir a GUI super( "Testing JComboBox" ); Container container = getcontentpane(); // obter area para colocar componentes container.setlayout(new FlowLayout()); // escolher layout g imagescombobox = new JComboBox(names); imagescombobox.setmaximumrowcount(3); imagescombobox.additemlistener( // crie e registe o \listener" new ItemListener() f // classe anonima public void itemstatechanged(itemevent event) f // \event handler" if ( event.getstatechange() == ItemEvent.SELECTED ) label.seticon(icons[imagescombobox.getselectedindex()]); g g // m da classe anonima ); // m do registo do \listener" container.add( imagescombobox ); label = new JLabel( icons[ 0 ] ); // cria o JLabel container.add( label ); // coloca no contentor setsize( 350, 100 ); setvisible( true ); Rui Camacho

JComboBox exemplo continuac~ao public static void main( String args[] ) f // execute a aplicacao ComboBoxTest application = new ComboBoxTest(); application.setdefaultcloseoperation(jframe.exit ON CLOSE ); g g // m da classe ComboBoxTest do livro Deitel & Deitel

do livro Deitel & Deitel Rui Camacho JPanel exemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PanelDemo extends JFrame f private JPanel buttonpanel; private JButton buttons[]; public PanelDemo() f // preparacao da GUI super( "Panel Demo" ); Container container = getcontentpane(); // obter local colocacao componentes buttons = new JButton[ 5 ]; // criar o array de botoes buttonpanel = new JPanel(); buttonpanel.setlayout(new GridLayout(1, buttons.length)); //escolha do layout

do livro Deitel & Deitel Rui Camacho JPanel exemplo { continuac~ao // criar e adicionar os botoes for(int count = 0; count < buttons.length; count++) f buttons[count] = new JButton(\Button \ + (count + 1)); buttonpanel.add(buttons[count]); g container.add( buttonpanel, BorderLayout.SOUTH ); setsize( 425, 150 ); setvisible( true ); g public static void main( String args[] ) f // execute a aplicacao PanelDemo application = new PanelDemo(); application.setdefaultcloseoperation(jframe.exit ON CLOSE); g g // m da classe PanelDemo