Java Basico Modulo 10

download Java Basico Modulo 10

of 27

Transcript of Java Basico Modulo 10

  • 8/6/2019 Java Basico Modulo 10

    1/27

    Curso Java Starter

    www.t2ti.com1

  • 8/6/2019 Java Basico Modulo 10

    2/27

    Curso Java Starter

    Apresentao

    O Curso Java Starter foi projetado com o objetivo de ajudar quelas pessoas

    que tm uma base de lgica de programao e desejam entrar no mercado de

    trabalho sabendo Java,

    A estrutura do curso formada por mdulos em PDF e por mini-cursos em

    vdeo. O aluno deve baixar esse material e estud-lo. Deve realizar os exerccios

    propostos. Todas as dvidas devem ser enviadas para a lista de discusso que est

    disponvel para inscrio na pgina do Curso Java Starter no site www.t2ti.com. As

    dvidas sero respondidas pelos instrutores Albert Eije, Cludio de Barros e Miguel

    Kojiio, alm dos demais participantes da lista.

    Nosso objetivo que aps o estudo do Curso Java Starter o aluno no tenha

    dificuldades para acompanhar um curso avanado onde poder aprender a

    desenvolver aplicativos para Web, utilizando tecnologias como Servlets e JSP e

    frameworks como Struts e JSF, alm do desenvolvimento para dispositivos mveis.

    Albert Eije trabalha com informtica desde 1993. Durante esse perodo j

    trabalhou com vrias linguagens de programao: Clipper, PHP, Delphi, C, Java, etc.

    Atualmente mantm o site www.alberteije.com.

    Cludio de Barros Tecnlogo em Processamento de Dados.

    Miguel Kojiio bacharel em Sistemas de Informao, profissional certificado

    Java (SCJP 1.5).

    O curso Java Starter surgiu da idia dos trs amigos que trabalham juntos em

    uma instituio financeira de grande porte.

    www.t2ti.com2

    http://www.alberteije.com/http://www.alberteije.com/http://www.alberteije.com/http://www.alberteije.com/
  • 8/6/2019 Java Basico Modulo 10

    3/27

    Curso Java Starter

    Mdulo

    10 Aplicaes grficasSWINGInterface grfica em Java

    As aplicaes grficas so aquelas que possibilitam a criao de uma GUI

    (Graphical User Interface Interface Grfica do Usurio), onde definimos oscomponentes que sero utilizados e suas disposies na tela, permitindo tambm uma

    interao com o usurio por meio do mouse e teclado.

    O Java possui duas bibliotecas grficas: AWT (Abstract Window Toolkit) e

    Swing. A primeira a ser criada foi a AWT e esta foi substituda pelo swing a partir do

    Java 1.2. Neste mdulo, falaremos somente do swing, por ter melhor aparncia,

    melhor tratamento de eventos, recursos estendidos, alm de todas as classes deste

    pacote serem extenses do pacote AWT.

    As classes do swing so encontradas no pacotejavax.swing. Usando swing,

    sua aplicao ter a mesmo forma, aparncia e comportamento independente de

    sistema operacional.

    Primeira Aplicao Grfica

    Todo componente swing deve ser adicionado a um continer. O continer

    essencial para uma aplicao grfica o JFrame.

    import javax.swing.JFrame; //importao da classe JFrame

    publicclass PrimeiroSwing {//criamos um JFrame chamado 'janela'JFrame janela = new JFrame();

    publicstaticvoidmain (String args[]){

    new PrimeiroSwing();}private PrimeiroSwing(){

    www.t2ti.com3

  • 8/6/2019 Java Basico Modulo 10

    4/27

  • 8/6/2019 Java Basico Modulo 10

    5/27

    Curso Java Starter

    Agora temos uma janela com um boto. Perceba que o boto ocupou toda a

    rea da janela, e ao clicar no boto nada acontece. Isto acontece porque no foidefinido nenhum layout para a janela e nenhum evento para o boto.

    O mtodo setDefaultCloseOperation() foi usado para definir que ao

    fecharmos a janela, encerra-se a aplicao (JFrame.EXIT_ON_CLOSE). Normalmente

    definimos este valor na janela principal da aplicao. Quando instanciamos um

    JFrame, o valor padro definido como (JFrame.HIDE_ON_CLOSE). Se deixarmos com o

    valor padro, ao fecharmos a janela, o processo continuar rodando, apenas ser

    escondida a janela. Temos tambm a opo (JFrame.DISPOSE_ON_CLOSE) que destri ajanela, sem encerrar a aplicao caso esta no seja a janela principal do sistema.

    No decorrer do estudo dos gerenciadores de layout e de tratamento de

    eventos, veremos novos componentes do swing e no final do mdulo seus principais

    mtodos.

    Gerenciadores de Layout

    Uma GUI construda a partir de componentes chamados contineres que

    contm outros componentes. Os mais usados so o JFrame e o JPanel. Caso

    nenhum gerenciador de layout seja especificado, ser considerado que toda a

    extenso do continer formada por uma nica clula, possibilitando assim apenas a

    incluso de um objeto.

    Os principais gerenciadores de layout so: FlowLayout, GridLayout,

    BorderLayout e CardLayout.

    www.t2ti.com5

  • 8/6/2019 Java Basico Modulo 10

    6/27

    Curso Java Starter

    FlowLayout

    O FlowLayout o gerenciador mais simples. Os componentes so dispostos

    da esquerda para a direita na ordem em que aparecem, isto , na ordem em que so

    adicionados. Quando no existe mais espao em uma linha, criada uma outra linha,

    se assemelhando a um editor de texto. Este processo feito automaticamente de

    acordo com o tamanho do continer.

    Vamos incluir em uma janela, um JPanel (continer), um JText (caixa de

    texto) , um JLabel (rtulo) e um JButton (boto).

    import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;

    publicclass ExemploFlowLayout {

    //criamos e instaciamos um JFrame chamado 'janela'JFrame janela = new JFrame();//criamos um JPanel chamado painelJPanel painel = new JPanel();//criamos um JLabel chamado rotulo e com o texto "Seu nome: "JLabel rotulo = new JLabel("Seu nome: ");

    //criamos um JTextField chamado texto com o tamanho 5JTextField texto = new JtextField(5);//criamos e instanciamos um JButton chamado 'botao' e com o texto "OK"JButton botao = new JButton("OK");

    publicstaticvoidmain (String args[]){new ExemploFlowLayout();

    }

    private ExemploFlowLayout(){//definimos o ttulo da janelajanela.setTitle("Exemplo de um FlowLayout");//definimos a largura e a altura da janela

    janela.setSize(300, 100);//define a posio da janela na telajanela.setLocation(50, 50);//define que ao fechar a janela, encerre a aplicaojanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definimos o layout do painelpainel.setLayout(new FlowLayout(FlowLayout.CENTER, 30, 20));//adicionamos o rotulo ao painelpainel.add(rotulo);//adicionamos o texto ao painelpainel.add(texto);//adicionamos o botao ao painelpainel.add(botao);

    //adicionamos o painel janelajanela.add(painel);//mostramos a janela

    www.t2ti.com6

  • 8/6/2019 Java Basico Modulo 10

    7/27

    Curso Java Starter

    janela.setVisible(true);}

    }

    Perceba que os componentes foram posicionados na janela de acordo com a

    sequncia em que os adicionamos no cdigo (primeiro o rtulo, depois o texto, e por

    ltimo o boto). A sintaxe do construtor do FlowLayout a seguinte:FlowLayout(alinhamento, espaamento-horizontal, espaamento-vertical)

    O nosso painel foi definido com o alinhamento centralizado, 30 de

    espaamento horizontal e 20 de espaamento vertical.

    GridLayout

    O GridLayout um gerenciador que divide um continer em um conjunto de

    clulas espalhadas numa grade retangular, de maneira que todas elas possuam a

    mesma dimenso. Pode-se dividir um continer em linhas e colunas de acordo com

    sua necessidade. Os componentes so dispostos na ordem em que aparecem, sendo

    inseridos na grade da esquerda para a direita e de cima para baixo.

    Qualquer modificao no tamanho do continer ser automaticamente

    alterado o tamanho dos componentes adicionados a ele, ou seja, os componentes so

    redimensionados em funo da nova dimenso do continer.

    Para definirmos um layout na forma de grade utilizamos a seguinte sintaxe:nome-do-conteiner.setLayout(new GridLayout(linhas, colunas, espaamento-

    horizontal, espaamento-vertical)

    linhas --> nmero de linhas que ter o continer

    colunas --> nmero de colunas que ter o continer

    espaamento-horizontal --> distncia horizontal entre os componentes

    espaamento-vertical --> distncia vertical entre os componentes

    Vamos criar uma janela contendo os componentes JPanel (continer), JList

    (lista), um JComboBox (combo), dois JLabel (rtulo) e um JButton (boto):

    www.t2ti.com7

  • 8/6/2019 Java Basico Modulo 10

    8/27

    Curso Java Starter

    import java.awt.GridLayout;import javax.swing.DefaultListModel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;

    publicclass ExemploGridLayout {//criamos um JFrame chamado 'janela'JFrame janela = new JFrame();//criamos um JPanel chamado painelJPanel painel = new JPanel();//criamos um JLabel chamado rotulo1 e com o texto "Escolha uma fruta: "JLabel rotulo1 = new JLabel("Escolha uma fruta: ");//criamos um JLabel chamado rotulo2 e com o texto "Escolha uma bebida: "JLabel rotulo2 = new JLabel("Escolha uma bebida: ");/* criamos um ListModel que o objeto que contm as opes da lista* no se preocupem com isso agora, pois veremos com mais detalhes

    */DefaultListModel listModel = new DefaultListModel();//criamos um JList chamado lista e definimos onde esto os objetos da

    listaJList lista = new JList(listModel);//criamos um JComboBox chamado comboJComboBox combo = new JComboBox();//criamos um JButton chamado 'botao' e com o texto "OK"JButton botao = new JButton("OK");

    publicstaticvoidmain (String args[]){new ExemploGridLayout();

    }

    private ExemploGridLayout(){//definimos o ttulo da janelajanela.setTitle("Exemplo de um FlowLayout");//definimos a largura e a altura da janelajanela.setSize(300, 200);//define a posio da janela na telajanela.setLocation(50, 50);//define que ao fechar a janela, encerre a aplicaojanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definimos o layout do painelpainel.setLayout(new GridLayout(3, 2, 5, 1));//adicionamos o rotulo1 ao painel

    painel.add(rotulo1);//acrescentamos algumas frutas a listalistModel.addElement("Ma");listModel.addElement("Uva");listModel.addElement("Pera");//adicionamos a lista ao painelpainel.add(lista);//adicionamos o rotulo2 ao painelpainel.add(rotulo2);//acrescentamos algumas bebidas ao combocombo.addItem("gua");combo.addItem("Refrigerante");combo.addItem("Suco");

    //adicionamos o combo ao painelpainel.add(combo);//adicionamos o botao ao painel

    www.t2ti.com8

  • 8/6/2019 Java Basico Modulo 10

    9/27

  • 8/6/2019 Java Basico Modulo 10

    10/27

    Curso Java Starter

    Vamos definir um JPanel com o layout BorderLayout, e incluir um JButton

    em cada regio do continer:

    import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;

    publicclass ExemploBorderLayout {//criamos um JFrame chamado 'janela'JFrame janela = new JFrame();//criamos um JPanel chamado painelJPanel painel = new JPanel();//criamos um JButton chamado sulJButton sul = new JButton("SUL");//criamos um JButton chamado norteJButton norte = new JButton("NORTE");//criamos um JButton chamado lesteJButton leste = new JButton("LESTE");//criamos um JButton chamado oesteJButton oeste = new JButton("OESTE");//criamos um JButton chamado centroJButton centro = new JButton("CENTRO");

    publicstaticvoidmain (String args[]){new ExemploBorderLayout();

    }

    private ExemploBorderLayout(){

    //definimos o ttulo da janelajanela.setTitle("Exemplo de um BoderLayout");//definimos a largura e a altura da janelajanela.setSize(300, 200);//define a posio da janela na telajanela.setLocation(50, 50);//define que ao fechar a janela, encerre a aplicaojanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definimos o layout do painelpainel.setLayout(new BorderLayout());//adicionamos os botes ao painelpainel.add("North", norte);painel.add("South", sul);

    painel.add("East", leste);painel.add("West", oeste);painel.add("Center", centro);//adicionamos o painel janelajanela.add(painel);//mostramos a janelajanela.setVisible(true);

    }}

    www.t2ti.com10

  • 8/6/2019 Java Basico Modulo 10

    11/27

    Curso Java Starter

    Para a utilizao do BorderLayout existe uma pequena diferena em relao

    aos gerenciadores anteriores: necessrio infomar no mtodo add() em qual regio

    o objeto ser inserido.Neste layout, no obrigatrio preencher todas as regies. possvel utilizar

    apenas as regies desejadas. Na classe anterior, vamos retirar os botes do Leste e

    Sul e ver o resultado:

    Como no existiam componentes nestas regies, os botes oeste e centro

    utilizam o espao que ficou livre.

    CardLayout

    O CardLayout se constitui em um gerenciador mais aprimorado que pode

    agrupar diversos contineres na forma de cartes, mostrando um de cada vez, ou

    seja, apenas um continer visvel por vez. Cada continer pode possuir seu layout

    especfico, permitindo que diversos gerenciadores de layout sejam usados em um

    mesmo espao da janela.Vamos criar uma janela sendo gerenciada pelo BorderLayout, contendo trs

    www.t2ti.com11

  • 8/6/2019 Java Basico Modulo 10

    12/27

    Curso Java Starter

    JPanel (painis), sendo que um deles ser gerenciado pelo CardLayout e os outros

    sem gerenciador contendo um JLabel (rtulo). Para alternar entre os painis, vamos

    incluir dois JButton (botes) em um JPanel:

    import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;

    publicclass ExemploCardLayout implements ActionListener{//criamos um JFrame chamado 'janela'JFrame janela = new JFrame();//criamos um JPanel chamado painel1JPanel painel1 = new JPanel();//criamos um JPanel chamado painel2JPanel painel2 = new JPanel();//criamos um JLabel chamado rotulo1JLabel rotulo1 = new JLabel("Painel 1", JLabel.CENTER);//criamos um JLabel chamado rotulo2JLabel rotulo2 = new JLabel("Painel 2", JLabel.CENTER);//criamos dois botoes e um painel para alternar entre os paineisJPanel painelSelecao = new JPanel();JButton botao1 = new JButton("Painel 1");JButton botao2 = new JButton("Painel 2");//criamos o painelCard que ser gerenciado pelo CardLayout

    JPanel painelCard = new JPanel();

    publicstaticvoidmain (String args[]){new ExemploCardLayout();

    }

    private ExemploCardLayout(){//definimos o ttulo da janelajanela.setTitle("Exemplo de um CardLayout");//definimos a largura e a altura da janelajanela.setSize(300, 200);//define a posio da janela na telajanela.setLocation(50, 50);

    //define que ao fechar a janela, encerre a aplicaojanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//definimos o layout da janelajanela.setLayout(new BorderLayout());//definimos o painelselecao com o GridLayout e incluimos os botoespainelSelecao.setLayout(new GridLayout(1,2));painelSelecao.add(botao1);painelSelecao.add(botao2);//adicionamos os rotulos a seus respectivos paineispainel1.add(rotulo1);painel2.add(rotulo2);//definimos o layout do painelCardpainelCard.setLayout(new CardLayout());

    //adicionamos os paineis quem contm os rotulos ao painelCardpainelCard.add(painel1, "p1");painelCard.add(painel2, "p2");

    www.t2ti.com12

  • 8/6/2019 Java Basico Modulo 10

    13/27

    Curso Java Starter

    //adicionamos os paineis janelajanela.add("North", painelSelecao);janela.add("East", painelCard);//registra os botoes para tratarmos os eventos gerados por elesbotao1.addActionListener(this);botao2.addActionListener(this);//mostramos a janelajanela.setVisible(true);

    }

    //veremos este metodo com mais detalhe no proximo topicopublicvoidactionPerformed(ActionEvent e){

    CardLayout cl = (CardLayout) painelCard.getLayout();if (e.getSource() == botao1){

    cl.show(painelCard, "p1");}if (e.getSource() == botao2){

    cl.show(painelCard, "p2");}

    }

    }

    No trecho de cdigo mostrado com a seta verde, definimos o layout do painel

    painelCard como sendo do tipo CardLayout e adicionamos os paineis que contm

    os rtulos. Perceba que no mtodo add() os parmetros so: componente a ser

    adicionado, e uma String como identificador do componente.

    No trecho marcado com a seta azul, criamos um objeto do tipo CardLayout e

    definimos qual painel seria visvel no momento. Caso o usurio clique no boto 1, o

    painel 1 ser mostrado, e caso clique no boto 2, o painel 2 ser mostrado. Para que

    mostremos o painel desejado, usamos a seguinte sintaxe:

    nome-do-cardlayout.show(nome-do-conteiner, identificador)

    www.t2ti.com13

  • 8/6/2019 Java Basico Modulo 10

    14/27

    Curso Java Starter

    Tratamento de Eventos

    Nas aplicaes em que desejamos interpretar as aes do usurio (ao clicar

    em um boto, por exemplo), necessitamos implementar uma ou mais interfaces

    receptoras de eventos. Cada classe receptora de eventos trata de um evento

    diferente. Alguns exemplos:

    ActionListener Eventos de ao como o clique do mouse sobre um

    boto, ao pressionar ENTER em um campo texto, etc.

    FocusListener Eventos de foco, gerados quando um componente

    recebe ou perde o foco.

    MouseListener eventos gerados pelo mouse quando clicado, entrana rea de um componente, etc.

    WindowListener eventos de janelas, gerados quando uma janela

    maximizada, minimizada, etc.

    Neste mdulo vamos aprender a utilizar a interface ActionListener. Esta

    classe exige a declarao do mtodo actionPerformed, que onde vamos definir o

    tratamento do evento gerado. Atravs do mtodo addActionListener registramos os

    componentes que sero observados.Vamos utilizar a classe de exemplo do gerenciador FlowLayout para registrar

    o boto e definir que ao ser clicado mostre o contedo do campo texto.

    import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;

    //implementamos a classe ActionListener para controlar os eventospublicclass ExemploFlowLayout implements ActionListener{

    //criamos um JFrame chamado 'janela'JFrame janela = new JFrame();//criamos um JPanel chamado painelJPanel painel = new JPanel();//criamos um JLabel chamado rotulo e com o texto "Seu nome: "JLabel rotulo = new JLabel("Seu nome: ");//criamos um JTextField chamado texto com o tamanho 5

    JTextField texto = new JTextField(5);//criamos e instaciamos um JButton chamado 'botao' e com o texto "OK"

    www.t2ti.com14

  • 8/6/2019 Java Basico Modulo 10

    15/27

    Curso Java Starter

    JButton botao = new JButton("OK");

    publicstaticvoidmain (String arg[]){new ExemploFlowLayout();

    }

    private ExemploFlowLayout(){//definimos o ttulo da janelajanela.setTitle("Exemplo de um FlowLayout");//definimos a largura e a altura da janelajanela.setSize(300, 100);//define a posio da janela na telajanela.setLocation(50, 50);//define que ao fechar a janela, encerre a aplicao//janela.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//definimos o layout do painelpainel.setLayout(new FlowLayout(FlowLayout.CENTER, 30, 20));//adicionamos o rotulo ao painelpainel.add(rotulo);//adicionamos o texto ao painel

    painel.add(texto);//adicionamos o botao ao painelpainel.add(botao);//adicionamos o painel janelajanela.add(painel);//mostramos a janelajanela.setVisible(true);//registramos o botao ao Listenerbotao.addActionListener(this);

    }

    //construimos o metodo exigido pela interfacepublicvoidactionPerformed(ActionEvent e){

    if (e.getSource() == botao){JOptionPane.showMessageDialog(null, texto.getText());

    }}

    }

    Na linha mostrada pela seta azul, registramos o boto para que os eventos

    gerados por ele sejam tratados pela interface.

    O bloco representado pela seta verde, onde definimos o que ser feito ao ser

    gerado um evento. Para sabermos qual componente gerou o evento, utilizamos o

    mtodo getSource() da classe ActionEvent. Neste exemplo, se o componente que

    gerou o evento foi o boto, ento mostramos uma mensagem com o contedo docampo texto.

    www.t2ti.com15

  • 8/6/2019 Java Basico Modulo 10

    16/27

    Curso Java Starter

    Componentes Swing

    Neste tpico veremos alguns componentes do swing, entre eles:

    JButton

    JOptionPane

    JLabel

    JTextField

    JComboBox

    JCheckBox

    JRadioButton

    JButton

    Utilizando a classe JButton podemos incluir botes em um continer.

    A tabela seguinte mostra alguns mtodos da classe Jbutton:

    Mtodo Descrio

    JButton() Constri um boto sem texto *

    JButton(String) Constri um boto com o texto informado *JButton(String, Icon) Constri um boto com o texto e imagem informados *

    getText() Obtm o texto do boto

    setText(String) Define o texto do boto

    setEnabled(boolean) Define se o boto est habilitado (true) ou desabilitado(false)

    * construtores

    Exemplo:import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;

    publicclass Botoes implements ActionListener{

    JFrame janela = new JFrame();//criamos dois botesJButton botao1 = new JButton();JButton botao2 = new JButton();

    www.t2ti.com16

  • 8/6/2019 Java Basico Modulo 10

    17/27

    Curso Java Starter

    publicstaticvoidmain (String args[]){new Botoes();

    }

    public Botoes(){janela.setSize(240,70);janela.setTitle("Exemplo de JButton");janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);janela.setLayout(new GridLayout(1,2));//definimos o texto dos botesbotao1.setText("Fechar");botao2.setText("OK");//registramos os botoes no ActionListenerbotao1.addActionListener(this);botao2.addActionListener(this);//adicionamos os botes a janelajanela.add(botao1);janela.add(botao2);janela.setVisible(true);

    }

    publicvoidactionPerformed(ActionEvent e){if (e.getSource() == botao1){

    //se pressionado o botao1, fechamos a aplicaoSystem.exit(0);

    }if (e.getSource() == botao2){

    //se pressionado o botao2, mostramos uma mensagemJOptionPane.showMessageDialog(null, "Janela de botes");

    }}

    }

    JOptionPane

    Utilizamos a classe JOptionPane para a incluso de mensagens. Esta classe

    especializada na gerao de caixas de dilogo, isto , pequenas janelas que fazem

    uma pergunta, avisam o usurio ou fornecem uma mensagem qualquer. Existem

    quatro tipos padro de caixas de dilogo, sendo eles:

    MessageDialog caixa de dilogo que apresenta uma mensagem,

    possibilitando acrescentar cones de alerta ao usurio.

    ConfirmDialog caixa de dilogo que alm de emitir uma mensagem,

    www.t2ti.com17

  • 8/6/2019 Java Basico Modulo 10

    18/27

    Curso Java Starter

    possibilita ao usurio responder a uma pergunta.

    InputDialog caixa de dilogo que alm de emitir uma mensagem,

    permite a entrada de um texto.

    OptionDialog caixa de dilogo que abrange os trs tipos anteriores.

    Vamos incrementar a classe Botoes e antes de fechar a janela ao ser

    pressionado o boto Fechar, confirmar a ao do usurio. No boto OK, o texto a

    ser apresentado ser o que o usurio digitar no InputDialog:

    publicvoidactionPerformed(ActionEvent e){

    if (e.getSource() == botao1){ //se pressionado o botao1, pedimos confirmao do usurio int resposta = JOptionPane.showConfirmDialog(null, "Deseja encerrar a aplicao?",

    "Confirmao", JOptionPane.OK_CANCEL_OPTION); //se a resposta for sim, encerra a aplicao if (resposta == JOptionPane.OK_OPTION){

    System.exit(0);}

    }

    if (e.getSource() == botao2){ //se pressionado o botao2, solicitamos ao usurio digitar uma mensagem

    String mensagem = JOptionPane.showInputDialog("Informe a mensagem:"); //mostramos a mensagem informada pelo usurio

    JOptionPane.showMessageDialog(null, mensagem);}

    }

    No bloco indicado pela seta azul, declaramos um objeto do tipo int que ir

    receber o valor da resposta na caixa de confirmao. A sintaxe utilizada para o

    mtodo showConfirmDialog():

    JOptionPane.showConfirmDialog(Component, mensagem, ttulo, botes)

    Component refere-se a um objeto do tipo continer que permite

    definir a posio da tela em que a caixa de mensagem aparecer. Quando

    utilizado null, a mensagem centralizada na tela.

    Mensagem mensagem do tipo String que ser informada ao usurio

    Ttulo texto que aparece na barra de ttulo. Tambm do tipo String

    Tipo os botes que estaro presentes na caixa de dilogo. No nosso

    exemplo, esto os botes OK e Cancel.

    No bloco indicado pela seta amarela, declaramos um objeto do tipo String que

    ir receber a mensagem informada pelo usurio no InputDialog. O parmetro

    utilizado a mensagem que ser informada ao usurio.

    Executando a aplicao, ao pressionar o boto OK temos:

    www.t2ti.com18

  • 8/6/2019 Java Basico Modulo 10

    19/27

    Curso Java Starter

    Ao pressionarmos OK aparece a mensagem:

    Quando pressionamos o boto Fechar, aparece a tela de confirmao:

    Ao pressionarmos OK a aplicao encerrada.

    JLabel

    A classe JLabel utilizada para a incluso de texto (rtulos) e/ou imagens.

    Esta classe no gera eventos, e tambm no permanece com o foco.

    A tabela seguinte mostra alguns mtodos desta classe:

    Mtodo Descrio

    JLabel() Constri um label sem texto

    JLabel(String) Constri um label com o texto informado

    JLabel(Icon) Constri um label contendo a imagem especificadasetText(String) Define o texto a ser mostrado

    www.t2ti.com19

  • 8/6/2019 Java Basico Modulo 10

    20/27

    Curso Java Starter

    getText() Retorna o texto que o label est mostrando

    JTextField

    A classe JTextField utilizada para a incluso de campos textos editveis de

    uma nica linha. A tabela seguinte mostra alguns mtodos desta classe:

    Mtodo Descrio

    JTextField() Constri um novo campo texto

    JTextField(int) Constri um campo texto com o nmero de colunas(tamanho) informado

    JTextField(String) Constri um campo texto com o texto especificadosetText(String) Define o texto do campo texto para o informado

    getText() Retorna o texto do campo texto

    setEnabled(boolean) Define se o campo texto est habilitado (true) oudesabilitado (false)

    JComboBox

    Utilizamos a classe JComboBox para criarmos caixas de seleo. Estas caixas

    permitem que o usurio selecione apenas um item de sua lista.

    A tabela seguinte mostra alguns mtodos da classe JcomboBox:

    Mtodo Descrio

    JComboBox() Cria uma caixa de seleo

    addItem(Object) Adiciona o objeto como um novo item

    getSelectedItem() Retorna o objeto que est selecionado

    getSelectedIndex() Retorna um valor do tipo int que representa o ndiceselecionado

    removeItemAt(int) Remove o item com o ndice especificado

    removeAllItems() Remove todos os itens da lista

    Exemplo:

    import java.awt.FlowLayout;

    import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;

    www.t2ti.com20

  • 8/6/2019 Java Basico Modulo 10

    21/27

    Curso Java Starter

    import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;

    publicclass ExemploCombo implements ActionListener{

    JFrame janela = new JFrame();JLabel label = new JLabel("Selecione uma cor:");JButton botao = new JButton("OK");//criamos um novo comboJComboBox combo = new JComboBox();

    publicstaticvoidmain (String args[]){new ExemploCombo();

    }

    public ExemploCombo(){janela.setSize(240,100);

    janela.setTitle("Exemplo de JComboBox");janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);janela.setLayout(new FlowLayout());janela.add(label);janela.add(combo);janela.add(botao);janela.setVisible(true);botao.addActionListener(this);//adicionamos as cores ao combocombo.addItem("Vermelho");combo.addItem("Verde");combo.addItem("Azul");

    }

    publicvoidactionPerformed(ActionEvent e){if (e.getSource() == botao){//mostramos uma mensagem informando a cor selecionada pelo usurio

    JOptionPane.showMessageDialog(null, combo.getSelectedItem());}

    }}

    JCheckBox

    Para incluirmos caixas de opo utilizamos a classe JCheckBox que permite

    www.t2ti.com21

  • 8/6/2019 Java Basico Modulo 10

    22/27

    Curso Java Starter

    representar uma opo que est ativada (true) ou desativada(false). As caixas de

    opo so utilizadas para exibir vrias opes dentre as quais o usurio pode optar

    por selecionar nenhuma, uma ou vrias delas.

    A tabela seguinte mostra alguns mtodos da classe JcheckBox:

    Mtodo Descrio

    JCheckBox() Cria um checkbox sem texto e no selecionado

    JCheckBox(String, boolean) Cria um checkbox com o texto e estado especificados

    isSelected() Retorna se o checkbox est selecionado (true) ouno (false)

    Exemplo:

    import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;

    publicclass ExemploCheckBox implements ActionListener{

    JFrame janela = new JFrame();JPanel painel = new JPanel();JButton botao = new JButton("OK");//criamos trs checkboxJCheckBox chk1 = new JCheckBox("Curso");JCheckBox chk2 = new JCheckBox("Java");JCheckBox chk3 = new JCheckBox("Starter");

    publicstaticvoidmain (String args[]){new ExemploCheckBox();

    }

    public ExemploCheckBox(){

    janela.setSize(240,100);janela.setTitle("Exemplo de JCheckBox");janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);janela.setLayout(new GridLayout(2,1));painel.setLayout(new GridLayout(1,1));painel.add(chk1);painel.add(chk2);painel.add(chk3);janela.add(painel);janela.add(botao);janela.setVisible(true);botao.addActionListener(this);

    }

    publicvoidactionPerformed(ActionEvent e){if (e.getSource() == botao){

    www.t2ti.com22

  • 8/6/2019 Java Basico Modulo 10

    23/27

    Curso Java Starter

    String mensagem = "";//se chk1 selecionado acrescentamos o seu texto a mensagemif (chk1.isSelected()){

    mensagem = chk1.getText() + " ";}//se chk2 selecionado acrescentamos o seu texto a mensagemif (chk2.isSelected()){

    mensagem += chk2.getText() + " ";}//se chk3 selecionado acrescentamos o seu texto a mensagemif (chk3.isSelected()){

    mensagem += chk3.getText();}JOptionPane.showMessageDialog(null, mensagem);

    }}

    }

    JRadioButton

    Os radio buttons so criados a partir da classe JRadioButton, e

    diferentemente dos JCheckBox, permitem que apenas uma entre vrias opes seja

    selecionada. Cada conjunto de radio buttons deve ser inserido em um

    ButtonGroup.

    A tabela seguinte mostra alguns mtodos da classe JRadioButton:

    Mtodo Descrio

    JRadioButton() Cria um radio button sem texto e noselecionado

    JRadioButton(String, boolean) Cria um radio button com o texto e estadoespecificados

    setSelected(boolean) define se o radio button est ou noselecionado (true ou false)

    ButtonGroup() Cria um grupo para radio buttons

    Nome-do-grupo.add(JRadioButton) Adiciona um radio button a um grupo

    Exemplo:import java.awt.GridLayout;

    www.t2ti.com23

  • 8/6/2019 Java Basico Modulo 10

    24/27

    Curso Java Starter

    import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JRadioButton;

    publicclass ExemploJRadioButton implements ActionListener{

    JFrame janela = new JFrame();JPanel painel = new JPanel();JButton botao = new JButton("OK");//criamos trs radio buttonsJRadioButton rb1 = new JRadioButton("Opo 1");JRadioButton rb2 = new JRadioButton("Opo 2");JRadioButton rb3 = new JRadioButton("Opo 3");//criamos o grupo para os radio buttonsButtonGroup grupo = new ButtonGroup();

    publicstaticvoidmain (String args[]){new ExemploJRadioButton();

    }public ExemploJRadioButton(){

    janela.setSize(240,100);janela.setTitle("Exemplo de JRadioButton");janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);janela.setLayout(new GridLayout(2,1));painel.setLayout(new GridLayout(1,1));painel.add(rb1);painel.add(rb2);painel.add(rb3);

    janela.add(painel);janela.add(botao);janela.setVisible(true);botao.addActionListener(this);//adicionamos os radio buttons ao grupogrupo.add(rb1);grupo.add(rb2);grupo.add(rb3);

    }publicvoidactionPerformed(ActionEvent e){

    if (e.getSource() == botao){String mensagem = "Nenhuma opo selecionada";//verificamos qual radio button est selecionado

    if (rb1.isSelected()){mensagem = "Opo 1 selecionada";

    }elseif (rb2.isSelected()){mensagem = "Opo 2 selecionada";

    }elseif (rb3.isSelected()){mensagem = "Opo 3 selecionada";

    }JOptionPane.showMessageDialog(null, mensagem);

    }}

    }

    www.t2ti.com24

  • 8/6/2019 Java Basico Modulo 10

    25/27

    Curso Java Starter

    Agora voc deve tentar resolver a lista de exerccios abaixo. Qualquer

    dificuldade envie para a lista de discusso:

    Exerccios

    Aprenda com quem tambm est aprendendo, veja e compartilhe as suas

    respostas no nosso Frum:

    Exerccios Mdulo 10 Aplicaes Grficas Swing

    1. Inclua em um JFrame gerenciado pelo layout GriLayout, dois JTextField

    e um JButton.

    2. Utilizando a classe feita no exerccio anterior, acrescente a seguinte

    funcionalidade: quando o usurio clicar no boto, mostre a soma dos valores

    informados nos campos texto.

    3. Crie um janela contendo 3 botes gerenciada pelo BorderLayout.

    Inicialmente, somente um deles estar habilitado. Ao clicar no boto que est

    habilitado, desabilita o mesmo e habilita somente um dos outros dois.

    4. Crie uma aplicao que calcule o valor final de uma venda. Caso o

    pagamento seja realizado em dinheiro, no haver acrscimo, caso seja em carto,

    ter um acrscimo de 5% e caso seja em cheque, o acrscimo ser de 10%. Utilize oJRadioButton para que o usurio escolha a forma de pagamento e o JTextField

    para o usurio informar o valor da venda e mostrar o resultado.

    5. Refaa a aplicao do exerccio anterior, substituindo o JRadioButton pelo

    JComboBox e o JTextField pelo InputDialog para receber o valor e

    MessageDialog para mostrar o resultado.

    6. Crie uma aplicao que simule o cadastramento de pessoas. O usurio

    www.t2ti.com25

    http://www.t2ti.com/forumhttp://www.t2ti.com/forum/viewforum.php?f=14http://www.t2ti.com/forumhttp://www.t2ti.com/forum/viewforum.php?f=14
  • 8/6/2019 Java Basico Modulo 10

    26/27

    Curso Java Starter

    digita o nome e o endereo, escolhe o sexo e estado civil atravs do ComboBox. Ao

    pressionar um boto, apresenta uma mensagem com os dados informados.

    7. Refaa o exerccio anterior substituindo o JComboBox pelo JRadioButton.

    8. Faa uma aplicao que apresente 5 itens de uma papelaria. O usurio ir

    escolher um ou mais itens. Ao clicar no boto Comprar, o sistema emite uma

    mensagem com os itens escolhidos pelo usurio. Utilize o JcheckBox.

    9. Altere a aplicao feita no exerccio anterior, confirmando a ao do usurio

    antes de mostrar a mensagem.

    10. Abra o promp de comando e acesse a pasta diretorio-instalacao-

    JDK/demo/jfc/SwingSet2/. Digite o comando: java -jar SwingSet2.jar e veja uma

    aplicao de demonstrao feita em swing. A tela inicial a seguinte:

    www.t2ti.com26

  • 8/6/2019 Java Basico Modulo 10

    27/27

    Curso Java Starter

    11. No pacote swing existem muitas classes. Neste mdulo foram vistos

    alguns componentes bsicos e seus principais mtodos. Acesse a documentao deste

    pacote para aprender mais sobre essas classes e seus respectivos mtodos:

    http://java.sun.com/javase/6/docs/api/

    http://java.sun.com/javase/6/docs/api/http://java.sun.com/javase/6/docs/api/