29

Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Interfaces Gr�a�cas em Java

Sum�ario

I SWING generalidadesI Componentes e ContentoresI Modelo de eventosI Gestores de Coloca�c~aoI Componentes e Contentores com exemplos

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Bibliogra�a

I The Java Tutorial, Trail: Creating a GUI with JFC/SwingI \Java How to Program", Deitel & Deitel, (cap��tulo 12)I The Java API

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 2: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Sugest~oes para estudar/praticar

I http://developer.java.sun.com/developer/onlineTraining/I ver os exemplos que vem com o JDK (direct�orio demo)I ver exemplos (downloadable) do livro de Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Java Foundation Classes (JFC)

conjunto de APIs na tentativa de tornar o Java uma linguagempara aplica�c~oes empresarais completasJFC �e composta por 5 APIs:

I AWTI Java 2DI AcessibilidadeI Drag and DropI Swing

AWT | Abstract Windowing Toolkit

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 3: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Swing | resumo

I Widgets do Swing extendem os do AWTI O modelo de eventos do AWT continua a ser usadoI Baseado em Componentes (e Contentores)I suporta os componentes do AWT mais outros (ex JComponent)I Drag and Drop Support - troca de informa�c~ao entre aplica�c~oes

noutra API do JFCI 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 con�gur�avelI Utiliza o Delegation Event Model

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Porque Swing

I AWT n~ao �e su�cientemente funcional para aplica�c~oesindustriaisa biblioteca de widgets �e pequenaos widgets s�o disp~oem de funcionalidades b�asicasextens~oes s~ao habitualmente necess�arias

I componentes AWT dependem de componentescorrespondentes nativos

I widgets n~ao tem exactamente o mesmo comportamento emdiferentes plataformas

AWT { Abstract Windowing Toolkit

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 4: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Pacotes importantes

I javax.swing - new GUI tools com novos componentes ...I javax.border - classes para desenhar contornos nos

componentesI javax.swing.colorchooser - classes para escolha de coresI javax.swing.event - classe para novos modelos de eventosI javax.swing.�lechooser - classes para escolha de �cheirosI javax.swing.plaf.* - classes for the Pluggable Look and FeelI javax.swing.text - manipula�c~ao de textoI ...I javax.accessibility - for disabled-persons accessibility

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Componente �uteis

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 5: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Componentes Heavyweight

I Usados pelo AWTI RectangularesI OpacosI S~ao sempre desenhados em cima de componentes lightweightI Dependem de cong�eneres nativosI Look and Feel depedente do sistema operativo (SO)I funcionalidade determinada pelo SOI mais r�apidos porque o SO realiza o trabalho

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Componentes Lightweight

I Podem ter partes transparentesI Podem tomar qualquer formaI Podem-se sobrepor entre elesI Eventos do rato ocorrem atrav�es das partes transparentesI N~ao depedem de cong�eneres nativos

I Look and Feel desenhado em tempo de execu�c~ao pelo quefuncionalidades s~ao o mesmo em todas as plataformas. Maislento por que o Java tem que fazer o trabalho.

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 6: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Interface Gr�a�ca b�asica

import javax.swing.*;import java.awt.*;import java.awt.event.*;

public class TestaJFramef

public static void main(String s[])fJFrame 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 janelapublic void windowClosing(WindowEvent event)f System.exit(0);g

g);frame.setSize(400,400);frame.show();

gg

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Resultado da Interface Gr�a�ca b�asica

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 7: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Elementos da Interface Gr�a�ca

I Contentores de topo - onde os outros componentes se desenhamJFrame, JDialog, JApplet

I Contentores Interm�edios- facilitam arranjo de outrosJPanel, JScrollPane, JTabbedPane

I Componentes at�omicos - apresentam informa�c~aoJButton, JComboBox, JTextField, Jtable

I Cria�c~ao de ComponentesI cria�c~ao do objectoI altera�c~ao dos atributosI (para contentores) associa�c~ao de um gestor de coloca�c~oes

(Layout Manager)I associa�c~ao de um gestor de eventos e programa�c~ao de

comportamentosI (se n~ao �e contentor de topo) adicionar a um contentor

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Swing | hierarquia de componentes | (semelhantes aos de AWT)

do tutorial: http://developer.java.sun.com/developer/onlineTraining/GUI/Swing1/

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 8: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Swing | hierarquia de componentes \novos"

do tutorial: http://developer.java.sun.com/developer/onlineTraining/GUI/Swing1/

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Hierarquia de componentes comuns do Swing

java.lang.Object"

java.awt.Component"

java.awt.Container"

javax.swing. JComponent

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 9: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Model / View / Controller

Elementos independentes:I Model

I dados de estado para cada componenteI dados diferentes para modelos diferentes

I ViewI \visual" do componente no ecr~a

I ControllerI como o componente reage a eventos

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Comunica�c~ao em MVC

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 10: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Exemplo de MVC

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

MVC em Java

I Swing usa o model-delegate design, uma arquitectura semelhante aoMVC.

I O View e Controller s~ao combinados no UI delegate uma vez que o Javatrata a maioria do seventos como o AWT.

I Multiplas views podem ser usados com um �unico modelo.I Mudan�cas num �unico modelo podem afectar v�arias views.I Os componentes podem partilhar um modelo (JScrollbar e JSlider

partilham o BoundedRangeModel).

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 11: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

MVC em Java

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Swing | Eventos

I EventObject

I objecto com informa�c~ao sobre evento (inclui id fonte)I fontes de eventos: componentesI Object getSource() Returns the object that �red the event

I Tipos de eventos

I eventos de baixo n��velI ex: eventos do rato e do teclado, resultados de entradas do

utilizadorI eventos semanticos

I ex: eventos de ac�c~ao e de selec�c~ao, com de�ni�c~ao dependentedo componente

I Tratamento: dirigido pelos eventos semanticos

I independentes da plataforma e do "look and feel"I independentes da composi�c~ao do objecto gerador

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 12: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Tratar Eventos

I Tratar eventos

I associar atendedores �as fontes de eventosI cada fonte pode ter v�arios atendedoresI cada atendedor pode tratar eventos de v�arias fontes

I Usar um atendedor de eventos

I de�nir classe que implementa um Listener ou extende classeque o implementaI public class UmaClasse implements ActionListener f...

I Registar uma instancia do gestor como atendedor de um oumais componentesI umComponente.addActionListener(instanciaDeUmaClasse)

I escrever c�odigo para os m�etodos da interface do ListenerI public void actionPerformed(ActionEvent e) f...

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Registar um Event handler

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 13: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Atendedores de Eventos

I Cada tipo de atendedor tem uma interface de�nida

I interface tem m�etodos para todos os eventos que o atendedorpode tratar

I atendedor espec���co tem de implementar todos os m�etodosI m�etodos para eventos irrelevantes podem ter corpo vazio

I em vez de usar interface: usar adaptadorI classe que implementa a interface e fornece m�etodos por

omiss~aoI subclasse desta s�o tem de de�nir os m�etodos a que quer dar

conte�udo pr�oprio

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Atendedores de Eventos

I Classe do atendedor pode ser interna

I classe interna tem acesso a atributos privados da classeI no exemplo: class QuitListener implements ActionListener f

I Classe do atendedor pode ser an�onima

I desnecess�ario criar nome para classe que se de�ne para criar 1s�o instancia

I no exemplo: combo.addActionListener( new ActionListener ()fpublic void actionPerformed(ActionEvent e) f ...gg)

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 14: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Exemplos de Atendedores

// classes embutidas ("nested")

class QuitListener implements ActionListener fpublic void actionPerformed(ActionEvent e) fSystem.exit(0);

gg

class ClickListener implements ActionListener fpublic void actionPerformed(ActionEvent e) fnumClicks++;etiqueta.setText(labelPre�x + numClicks);

gg

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Delegation Event Model

o Swing �e baseado no Delegation Event Model do JDK 1.1

I No JDK 1.0 s�o as classes dos componentes tem m�etodos paratratar eventos, e por isso nenhum outro objecto pode tratareventos.

I M�etodos de tratamento e eventos de componentes s~aosbstituidos por interfaces de event listener classes deadapta�c~ao

I Qualquer classe pode usar listener interfaces ou adapterclasses.

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 15: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Modelo de eventos do JDK 1.0

I programas tem que extender os componentes GUI e sobreporaction() ou handleEvent()

I s~ao necess�arias muitas classesI eventos s~ao propagados pela hierarquia acima do GUI at�e

serem consumidos ou atingirem a raizI eventos para a hierarquia podem ser tratados por um

container (�e necess�ario uma instru�c~ao condicional complexa)

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Problemas com o modelo de eventos do JDK 1.0

I extender a classe de um componente sem mudar nada �eredundante e enfadonho

I n~ao �e poss��vel separar o modelo da aplica�c~ao do GUI (n~ao h�aMVC)

I complicado processar tipos diferentes de eventos uma vez queos eventos s~ao tratados pelos mesmos m�etodos

I events s~ao entregues aos componentes quer os componentesos processem ou n~ao

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 16: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JDK 1.1 Event Listeners

I objectos que implementam uma interface EventListenerespec���ca por extens~ao do gen�erico java.util.EventListener

I de�ne os m�etodos que pode ser invocados pela fonte deeventos em resposta a cada tipo de evento espec���co tratadopela interface

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

I Baixo n��vel

I entrada de baixo n��vel ou uma ocorrencia janela-sistema numcomponente visual no ecr~a

I java.awt.event.ComponentEvent (redimensionamento decomponente, movido, etc.)

I java.awt.event.KeyEvent (componente recebeu key-press,key-release, etc.)

I java.awt.event.MouseEvent (componente recebeumouse-down, mouse-move, etc.)

I java.awt.event.FocusEvent (componente recebeu focus, perdade focus)

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 17: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Tipos de Eventos

I SemanticosI relacionados com a semantica do modelo de componentes de

uma interface com o utilizadorI 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")

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Fontes de Eventos

I M�ultiplos atendedores de eventos podem ser atribuidos a umafonte (ordem n~ao �e garantida)

I Baixo n��velI java.awt.Component

I addComponentListener ( ComponentListener l)I addMouseListener ( MouseListener l)I addMouseMotionListener ( MouseMotionListener l)

I SemanticoI java.awt.List

I addActionListener ( ActionListener l)I addItemListener ( ActionListener l)

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 18: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Classes de Adaptadores

Estas podem ser extendidads em vez de se usar interfaces, quandoo interface tem muitos m�etodos n~ao usados (ex:MouseMotionListener).As classes Adapter:I java.awt.event.ComponentAdapterI java.awt.event.ContainerAdapterI java.awt.event.FocusAdapterI java.awt.event.KeyAdapterI java.awt.event.MouseAdapterI java.awt.event.MouseMotionAdapterI java.awt.event.WindowAdapter

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Layout Managers

I arranjam os widgets de acordo com um padr~aoI podem actualizar os contentores para suportar

redimensionamento do contentor ou componentes internosI tornam poss��vel a elabora�c~ao de UIs complexos

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 19: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Swing | Gestor de Coloca�c~ao

I Determina o arranjo dos componentes

I tamanho e posi�c~ao dos componentes nos contentores

I Variantes de Gestor:

I BorderLayout, BoxLayout, FlowLayout, GridBagLayout,GridLayout, CardLayout

I BorderLayoutNORTH

WETS CENTER EASTSOUTH

I BoxLayout: componentes em linhaI FlowLayout: componentes por ordem em linhasI GridLayout: componentes do mesmo tamanho, em linhas e

colunasI GridBagLayout: componentes em linhas e colunas, tamanhos

ex��veis

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Flow Layout

I Arranja os componentes da esquerda para a direita e do cimo para baixoI Coloca tantos componentes numa linha quanto possivel antes de passar �a linha

seguinteI deixa o utilizador especi�car o alinhamentoe espa�camento horizontal e vertical

toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));toolbar.add(playButton);

toolbar.add(stopButton);

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 20: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Border Layout

I Dsitribui os componentes pelos bordos ou centro

I NORTH

I SOUTH

I EAST

I WEST

I CENTERI permite especi�car espa�camento horizontal e vertical

contentPanel.setLayout(new BorderLayout(0,0));contentPanel.add(\Center", oPanel);

contentPanel.add(\South, controlPanel);

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

Grid Layout

I Distribui os components numa grelha com um n�umero de colunas e linahsespeci�cado

I linhas tem a mesma altura e colunas a mesma largura

contentPanel.setLayout(new GridLayout(2,4));contentPanel.add(startButton, 0, 0);

contentPanel.add(stopButton, 1, 3);

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 21: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JLabel { exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class LabelTest extends JFrame fprivate JLabel label1, label2, label3;

public LabelTest()f // constroi o GUIsuper( "Testing JLabel" );Container container = getContentPane(); // obtem area colocar componentescontainer.setLayout( new FlowLayout() );

label1 = new JLabel( "Label with text" ); // construtor com argumento Stringlabel1.setToolTipText( "This is label1" );container.add( label1 );

Icon bug = new ImageIcon("bug1.gif");label2 = new JLabel( "Label with text and icon", bug, SwingConstants.LEFT ); // construtor com String e Iconlabel2.setToolTipText( "This is label2" );container.add( label2 );

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JLabel { exemplo | continua�c~ao

label3 = new JLabel(); // construtor sem argumentoslabel3.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 apliaccaoLabelTest application = new LabelTest();application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE );

gg // �m da classe LabelTest

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 22: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JTextField { exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class TextFieldTest extends JFrame fprivate JTextField textField1, textField2, textField3;private JPasswordField passwordField;

public TextFieldTest() f // constroi o GUIsuper( "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 );

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JTextField { exemplo | continua�c~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 handlertextField1.addActionListener( handler );textField2.addActionListener( handler );textField3.addActionListener( handler );passwordField.addActionListener( handler );setSize( 325, 100 );setVisible( true );

g

public static void main( String args[] ) f // executar a apliaccaoTextFieldTest application = new TextFieldTest();application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);

g

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 23: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JTextField { exemplo | continua�c~ao

private class TextFieldHandler implements ActionListener f //classe privada internapublic void actionPerformed( ActionEvent event )f // procesa os eventosString 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 ) fJPasswordField pwd = (JPasswordField) event.getSource();string = "passwordField: " + new String(passwordField.getPassword());g

JOptionPane.showMessageDialog( null, string );g

g // �m da classe privada interna TextFieldHandlerg // �m da classe TextFieldTest

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JButton { exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class ButtonTest extends JFrame fprivate JButton plainButton, fancyButton;

public ButtonTest()f // cnstruir o GUIsuper( "Testing Buttons" );Container container = getContentPane();container.setLayout( new FlowLayout() );

// criar os botoesplainButton = new JButton( "Plain Button" );container.add( plainButton );

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 24: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JButton { exemplo | continua�c~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 botoesfancyButton.addActionListener( handler );plainButton.addActionListener( handler );

setSize( 275, 100 );setVisible( true );

g

public static void main( String args[] ) fButtonTest application = new ButtonTest();

application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);g

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JButton { exemplo | continua�c~ao

private class ButtonHandler implements ActionListener f

public void actionPerformed( ActionEvent event )fJOptionPane.showMessageDialog(null,"You pressed: "+event.getActionCommand());

gg // �m da classe privada interna ButtonHandler

g // �m da classe ButtonTest

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 25: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JRadioButton | exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class RadioButtonTest extends JFrame fprivate JTextField �eld;private Font plainFont, boldFont, italicFont, boldItalicFont;private JRadioButton plainButton, boldButton, italicButton, boldItalicButton;private ButtonGroup radioGroup;

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JRadioButton | exemplo | continua�c~ao

public RadioButtonTest()f // cria a GUIsuper( "RadioButton Test" );Container container = getContentPane(); // obtem area para colocacao componentescontainer.setLayout( new FlowLayout() ); // escolhe layout

�eld = new JTextField("Watch the font style change", 25);container.add( �eld );

// criar os botoesplainButton = 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);

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 26: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JRadioButton | exemplo | continua�c~ao

// registar o handler para os botoesRadioButtonHandler handler = new RadioButtonHandler();plainButton.addItemListener( handler );boldButton.addItemListener( handler );italicButton.addItemListener( handler );boldItalicButton.addItemListener( handler );

// criar a relacao entre os botoes de um JRadioButtonsradioGroup = new ButtonGroup();radioGroup.add( plainButton );radioGroup.add( boldButton );radioGroup.add( italicButton );radioGroup.add( boldItalicButton );

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JRadioButton | exemplo | continua�c~ao

// criar objectos tipo fontplainFont = 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

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 27: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JRadioButton | exemplo | continua�c~ao

public static void main( String args[] ) f // executar a aplicacaoRadioButtonTest application = new RadioButtonTest();application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE );

g

private class RadioButtonHandler implements ItemListener fpublic void itemStateChanged( ItemEvent event ) f // processar eventosif ( 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 );

gg // �m da classe privada RadioButtonHandler

g // �m da classe RadioButtonTest

do livro Deitel & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JComboBox | exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class ComboBoxTest extends JFrame fprivate 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

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 28: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JComboBox | exemplo | continua�c~ao

public ComboBoxTest() f // construir a GUIsuper( "Testing JComboBox" );Container container = getContentPane(); // obter area para colocar componentescontainer.setLayout(new FlowLayout()); // escolher layout

imagesComboBox = new JComboBox(names);imagesComboBox.setMaximumRowCount(3);imagesComboBox.addItemListener( // crie e registe o \listener"

new ItemListener() f // classe anonimapublic void itemStateChanged(ItemEvent event) f // \event handler"if ( event.getStateChange() == ItemEvent.SELECTED )label.setIcon(icons[imagesComboBox.getSelectedIndex()]);

gg // �m da classe anonima

); // �m do registo do \listener"container.add( imagesComboBox );label = new JLabel( icons[ 0 ] ); // cria o JLabelcontainer.add( label ); // coloca no contentorsetSize( 350, 100 );setVisible( true );

g

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JComboBox | exemplo | continua�c~ao

public static void main( String args[] ) f // execute a aplicacaoComboBoxTest application = new ComboBoxTest();

application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE );g

g // �m da classe ComboBoxTest

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC

Page 29: Bibliogra a - web.fe.up.ptrcamacho/cadeiras/cpa/acetatos/swing-2.pdf · Apresenta cao~ Java { conceitos Basicos Java { t opicos espec cos Componentes Heavyweight I Usados pelo AWT

Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JPanel | exemplo

import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class PanelDemo extends JFrame fprivate JPanel buttonPanel;private JButton buttons[];

public PanelDemo() f // preparacao da GUIsuper( "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 & DeitelRui Camacho Complementos de Programa�c~ao e Algoritmos { LEICApresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos

JPanel | exemplo { continua�c~ao

// criar e adicionar os botoesfor(int count = 0; count < buttons.length; count++) fbuttons[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 aplicacaoPanelDemo application = new PanelDemo();

application.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);g

g // �m da classe PanelDemo

do livro Deitel & Deitel

Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC