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

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

Programação Gráfica em Java.

Elaborando as Interfaces Aulas 31, 32 e 33

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

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

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

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

Adding User Interaction

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

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

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

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

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

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

Arquivos. Prof. Leonardo Barreto Campos 1

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

MÓDULO 4 SWING Parte 3

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

JAVA. Gerenciadores de Layout. Tiago Alves de Oliveira

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

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

Gerenciadores de Layout

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

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

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

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

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

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

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

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

Programação Orientada a Objetos

Desenvolvimento de Aplicações Desktop

CONTEÚDO PROGRAMÁTICO

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

8. Interfaces Gráficas de Usuário

Orientação a Objetos

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

Gerenciamento de Layout

Orientação a Objetos

A classe JTextField

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

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

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

Elaborando as Interfaces Aulas 43, 44 e 45

Programação II. Cassio Diego

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

Aula Prática Criando Views e Controles

MANIPULAÇÃO DE EVENTOS

Prof. Responsáveis Wagner Santos C. de Jesus

Interface Gráficas Parte I. Bruno Crestani Calegaro

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

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

JMENU, JDESKTOPPANE E JINTERNALFRAME

Interface Gráfica - Swing

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

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

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 19, 20 e 21

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

Componentes Parte 01

Programação Orientada a Objetos II

Tiago Alves de Oliveira. Tiago Alves de Oliveira

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

Interfaces Gráficas com Swing. Professor Leonardo Larback

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

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

Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing

Programação Orientada a Objetos

Vector Java. Empregado.java

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

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

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

Unidade 12: Programação de Banco de Dados com Java Prof. Daniel Caetano

Gestores de Layout. Arranjo de elementos numa Janela

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Componentes no Java SE

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Linguagem de programação 2 GUI

COM220 Aula 17: Interface Gráfica Containers Swing

LSD LSD PICC. Manuela Sousa

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Pacote Java Swing Parte 1

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

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

Prof. Msc. Vladimir Camelo

LPII Programando uma Cálculadora Simples Módulo III

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

Modulo I Swing Básico

Java. Guia do Programador. Peter Jandl Junior. Novatec

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 3- Desenvolvendo Interfaces Mais Ricas

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

Programação Orientada a Objetos II

Model-View-Controller (MVC)

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

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 com o Usuário (GUI) Profa. Isabel Harb Manssour (Material adaptado das aulas da Profa. Luciana Nedel e do Prof.

Prof. Responsáveis Wagner Santos C. de Jesus

Transcrição:

Programação Gráfica em Java Alguns Componentes javax.swing Objetivo: Ao final da aula o aluno deverá ser capaz de empregar alguns componentes visuais do pacote javax.swing para produzir interfaces gráficas. Além dos componentes visuais, será abordado, de forma superficial, o listener do teclado, tratamento de erros e entrada e saída de arquivos texto. Componente Exemplo JButton: Gerenciador de Layout: JComboBox e JTextArea: JTextArea; JScrollPane; Arquivos de Entrada e Saída e Tratamento de Erros: JPasswordField e Listener do Teclado: Prof. Vida (vida@utfpr.edu.br) 22

Sumário 1. Componentes de Interface Gráfica... 24 Botão... 24 Exemplo de código:... 24 Sugestão de código para o programa de teste ou execução.... 26 A execução:... 26 Como definir o posicionamento dos componentes?... 27 2. Gerente de Layout... 27 a) FlowLayout... 28 Exemplo de FlowLayout:... 28 b) BordeLayout:... 28 Como inserir componentes em uma específica região?... 29 Exemplo de BorderLayout:... 29 c) GridLayout:... 29 Exemplo de definição de um GridLayout:... 29 Exemplo de Execução do GridLayout... 30 GridLayout com espaços.... 30 3. Outros Componentes Gráficos... 30 3.1 JComboBox / JTextArea... 32 3.2 JTextArea / JScrollPane / Arquivos de Entrada e Saída / Tratamento de Erros... 33 3.3 JPasswordField / Listener do Teclado... 35 Desafio:... 36 Desafio 2:... 37 Prof. Vida (vida@utfpr.edu.br) 23

1. Componentes de Interface Gráfica Um botão, ou JButton, é um componente gráfico que permite que o Botão usuário solicite alguma ação. Um elemento JButton é inicializado de maneira similar a qualquer outro componente Java, através da palavra new. As linhas 13 e 14 do código abaixo criam um botão cujo rótulo é a palavra amarelo. As linhas 15, 16, 17 e 18 criam outros dois botões. Após a criação das instâncias dos botões, é recomendável, adicionar métodos listeners conforme ilustrado nas linhas 38 a 44, por exemplo. A instância de JButton pode ser adicionada no painel através da instrução add(component) do componente JPanel. A linha 59 ilustra esse aspecto. Exemplo de código: //////////////// **** arquivo meuformulario.java /*01*/ package interfacegrafica.formulario; /*02*/ import javax.swing.*; /*03*/ import java.awt.event.*; /*04*/ import java.awt.*; /*05*/ class Eventos extends WindowAdapter /*06*/ { /*07*/ public void windowclosing(windowevent e) /*08*/ {System.exit(0); } /*09*/ } /*10*/ public class meuformulario extends JFrame /*11*/ { /*12*/ private JPanel conteudo = new JPanel(); /*13*/ private JButton botao1 = new /*14*/ JButton("amarelo"); /*15*/ private JButton botao2 = new /*16*/ JButton("verde"); /*17*/ private JButton botaosair = new /*18*/ JButton("Exit"); /*19*/ private void centraliza() /*20*/ { /*21*/ int x = /*22*/ ((Toolkit.getDefaultToolkit()) /*23*/.getScreenSize()).width; /*24*/ int y = /*25*/ ((Toolkit.getDefaultToolkit()) /*26*/.getScreenSize()).height; /*27*/ setlocation((x - getsize().width)/2 /*28*/,(y-getSize().height)/2); /*29*/ } /*30*/ public meuformulario(string titulo) /*31*/ { /*32*/ addwindowlistener( new Eventos()); /*33*/ conteudo.setbackground(new /*34*/ Color(159,154,151)); /*35*/ settitle(titulo); Prof. Vida (vida@utfpr.edu.br) 24

/*36*/ setsize(320,240); /*37*/ centraliza(); /*38*/ botao1.addactionlistener /*39*/ ( /*40*/ new AbstractAction() /*41*/ {public void actionperformed(actionevent evt) /*42*/ {conteudo.setbackground(color.yellow);} /*43*/ } /*44*/ ); /*45*/ botao2.addactionlistener /*46*/ ( /*47*/ new AbstractAction() /*48*/ {public void actionperformed(actionevent evt) /*49*/ {conteudo.setbackground(color.green);} /*50*/ } /*51*/ ); /*52*/ botaosair.addactionlistener /*53*/ ( /*54*/ new AbstractAction() /*55*/ {public void actionperformed(actionevent evt) /*56*/ {System.exit(0);} /*57*/ } /*58*/ ); /*59*/ conteudo.add(botao1); /*60*/ conteudo.add(botao2); /*61*/ conteudo.add(botaosair); /*62*/ Container fundo = getcontentpane(); /*63*/ fundo.add(conteudo); /*64*/ } /*65*/ } Prof. Vida (vida@utfpr.edu.br) 25

Sugestão de código para o programa de teste ou execução. A execução: ////*********** arquivo testemeuformulario.java package interfacegrafica.formulario; import javax.swing.*; public class testemeuformulario { public static void main(string[] a) { (new meuformulario ("Entrada de Dados")).show(); } } A Figura 1 ilustra o resultado da execução do programa anterior. Podese observar que não foi definido no código do programa o posicionamento dos botões. Poderíamos dizer que os botões são colocados na ordem em que a função add(component) foi chamada e que seu posicionamento na tela é aleatório. Figura 1-Inserção aleatória de botões. Esse posicionamento aleatório pode ser melhor observado se inserirmos uma quantidade elevada de componentes. Por exemplo, insira entre as linhas 61 e 62 do código anterior, a seguinte instrução: /*61_1*/ for (int i = 4; i < 34; i++) /*61_2*/ { /*61_3*/ conteudo.add( /*61_4*/ new JButton( /*61_5*/ "Botao #"+i)); /*61_6*/ } A Figura 2 ilustra o resultado da execução do programa com as instruções das linhas 61_1 a 61_6 inseridas no arquivo meuformulario.java. Prof. Vida (vida@utfpr.edu.br) 26

Como definir o posicionamento dos componentes? Figura 2-Inserção aleatória de muitos botões. O positionamento dos componentes na janela é definido através do conceito de Layouts. 2. Gerente de Layout. Nesse material de apoio ao estudo, serão analisados três tipos de gerenciadores de layout, a saber: a) FlowLayout b) BorderLayout c) GridLayout Prof. Vida (vida@utfpr.edu.br) 27

a) FlowLayout FlowLayout é um gerente de Layout que procura alinhas os componentes em um contexto de fluxo de elementos. Exemplo de FlowLayout: O seguinte código ao ser inserido entre as linhas 58 e 59 permitirá definir o posicionamento dos componentes. /*58_1*/ conteudo.setlayout(new FlowLayout(0,10,1)); Uma instância de FlowLayout é chamada através da palavra new. O construtor dessa classe pode receber três parâmetros inteiros a saber: new FlowLayout(int p1, int p2, int p3). p1: define o alinhamento de acordo com os seguintes valores inteiros: { 0 -> alinhamento a esquerda, 1 -> alinhamento no centro e 2 -> alinhamento a direita}. p2: define o espaçamento horizontal em pixels. p3: define o espaçamento vertical em pixels. A Figura 3 a seguir exemplifica a modificação no posicionamento dos componentes em função do valor de p1. Figura 3-Posicionamento do FlowLayout b) BordeLayout: Outro LayOut que poderia ser utilizado é o BorderLayout(). No código manipulado até o presente, realize as seguintes modificações: Exclua as linhas 61_1 a 61_6. Modifique a linha /*58_1*/ para conter a seguinte instrução: /*58_1*/ conteudo.setlayout(new BorderLayout()); Esse Layout define quatro regiões, conforme ilustra a Figura 4. Nessas regiões, qualquer componente pode ser inserido. Prof. Vida (vida@utfpr.edu.br) 28

Figura 4-Regiões do BorderLayout Como inserir componentes em uma específica região? Modifique as seguintes linhas do código trabalhado até agora: /*58_1*/ conteudo.setlayout(new BorderLayout()); /*59*/ conteudo.add(botao1,"east"); /*60*/ conteudo.add(botao2,"north"); /*61*/ conteudo.add(botaosair,"south"); /*62*/ Container fundo = getcontentpane(); /*63*/ fundo.add(conteudo); Ao definir essas regiões, a execução fornecerá a disposição dos componentes de acordo com o ilustrado na Figura 5. Exemplo de BorderLayout: Figura 5 -Exemplo de Execução do BorderLayout O GridLayout permite organizar a área em linhas e colunas. Cada célula c) GridLayout: definida no grid pode armazenar qualquer componente gráfico. A instrução new GridLayout(int Linhas, int Colunas) Exemplo de permite especificar como será dividia a área. definição de um No código, realize as seguintes modificações: GridLayout: /*58_1*/ conteudo.setlayout(new GridLayout(2,2)); /*59*/ conteudo.add(botao1); /*60*/ conteudo.add(botao2); /*61*/ conteudo.add(botaosair); /*62*/ Container fundo = getcontentpane(); /*63*/ fundo.add(conteudo); Prof. Vida (vida@utfpr.edu.br) 29

Exemplo de Execução do GridLayout Ao definir essas regiões, a execução fornecerá a disposição dos componentes de acordo com o ilustrado na Figura 6. GridLayout com espaços. Figura 6-Exemplo de Execução do GridLayout Observer que o preenchimento da tabela é feita em ordem. O GridLayout permite ainda a definição de um espaçamento entre os componentes. Esse aspecto pode ser definido no seu construtor. Por exemplo, realize as seguintes modificações: /*58_1*/ conteudo.setlayout(new GridLayout(2,3,10,15)); Nesse caso, o construtor o espaçamento horizontal é 10 pixels e o vertical 15 pixels. A Figura 7 ilustra a execução do GridLayout com espaços. Figura 7-Exemplo de Execução do GridLayout com espaços 3. Outros Componentes Gráficos Nessa terceira parte, os seguintes componentes serão investigados: JComboBox JTextArea Prof. Vida (vida@utfpr.edu.br) 30

JScrollPane JPasswordField JLabel Para essa análise, um arquivo auxiliar deve ser gerado. Nesse arquivo, uma classe genérica denominada Janela será definida com o posicionamento no centro da tela, com o componente JMenu permitindo ao usuário encerrar a aplicação. A partir dessa classe Janela, através do conceito de Herança, outras janelas serão geradas. ////**************** arquivo exemplocomponentes.java /*001*/ package interfacegrafica.componentes; /*002*/ import javax.swing.*; /*003*/ import java.awt.event.*; /*004*/ import java.awt.*; /*005*/ class Acoes implements ActionListener /*006*/ { /*007*/ public void actionperformed(actionevent evt) /*008*/ { /*009*/ if (evt.getsource() instanceof JMenuItem ) /*010*/ {JMenuItem quem = (JMenuItem)evt.getSource(); /*011*/ if (quem.getactioncommand() == "Exit") /*012*/ System.exit(0); /*013*/ } /*014*/ } /*015*/ } /*016*/ class Eventos extends WindowAdapter /*017*/ { /*018*/ public void windowclosing(windowevent e) /*019*/ {System.exit(0); } /*020*/ } /*021*/ class Janela extends JFrame /*022*/ { /*023*/ private void centraliza() /*024*/ { /*025*/ int x = ((Toolkit.getDefaultToolkit()).getScreenSize()).width; /*026*/ int y = ((Toolkit.getDefaultToolkit()).getScreenSize()).height; /*027*/ setlocation((x getsize().width)/2, (y-getsize().height)/2); /*028*/ } /*029*/ private JMenuBar criarmenus() /*030*/ { /*031*/ JMenuBar menu = new JMenuBar(); /*032*/ JMenu mfile = new JMenu("File"); /*033*/ mfile.setmnemonic('f'); /*034*/ JMenuItem mexit = new JMenuItem("Exit",'E'); /*035*/ mexit.addactionlistener(new Acoes()); Prof. Vida (vida@utfpr.edu.br) 31

/*036*/ mfile.add(mexit); /*037*/ menu.add(mfile); /*038*/ return menu; /*039*/ } /*040*/ public Janela(){this("exemplo");} /*041*/ public Janela(String titulo) /*042*/ { /*043*/ setjmenubar(criarmenus()); /*044*/ addwindowlistener( new Eventos()); /*045*/ settitle(titulo); /*046*/ setsize(320,240); /*047*/ centraliza(); /*048*/ } /*049*/} /*050*/public class exemplocomponentes /*051*/{ /*052*/ public static void main(string[] a) /*053*/ { (new Janela()).show();} /*054*/} 3.1 JComboBox / JTextArea Componente que permite ao usuário selecionar um elemento em um conjunto de elementos. Código Exemplo: ////**************** arquivo exemplocombobox.java /*001*/ package interfacegrafica.componentes; /*002*/ import javax.swing.*; /*003*/ import java.awt.event.*; /*004*/ import java.awt.*; /*004*/ public class exemplojcombobox extends Janela /*005*/ { /*006*/ private JPanel conteudo = new JPanel(); /*007*/ private JPanel conteudo2 = new JPanel(); /*008*/ private JButton bt = new JButton("click"); /*009*/ private JTextArea msg = new JTextArea(); /*010*/ private JComboBox combo; /*011*/ public exemplojcombobox() /*012*/ { /*013*/ conteudo.setlayout(new GridLayout(1,2,5,10)); /*014*/ Object [] op = {"PRIMEIRO","SEGUNDO","TERCEIRO"}; /*015*/ combo = new JComboBox(op); /*016*/ combo.additem("quarto"); Prof. Vida (vida@utfpr.edu.br) 32

/*017*/ bt.addactionlistener(new AbstractAction() /*018*/ { public void actionperformed(actionevent evt) /*019*/ { int q = combo.getitemcount(); /*020*/ msg.settext("combobox com "+ q + " elementos" /*021*/ +"\n o usuario selecionou o item: " /*022*/ + combo.getselecteditem());} /*023*/ } /*024*/ ); /*025*/ setsize(320,120); /*026*/ conteudo.add(combo); /*027*/ conteudo.add(bt); /*028*/ conteudo2.setlayout(new BorderLayout()); /*029*/ conteudo2.add(conteudo,"north"); /*030*/ msg.seteditable(false); /*031*/ conteudo2.add(msg,"center"); /*032*/ Container fundo = getcontentpane(); /*033*/ fundo.add(conteudo2); /*034*/ } /*035*/ public static void main(string[] a) /*036*/ { /*037*/ (new exemplojcombobox()).setvisible(true); /*038*/ }} 3.2 JTextArea / JScrollPane / Arquivos de Entrada e Saída / Tratamento de Erros Permite que o usuário edite texto. No exemplo a seguir, também é apresentado como acessar arquivos texto para leitura e escrita. Outro aspecto que merece destaque é a rotina de tratamento de erros das linhas 19 / 20 e 27 / 28. Código Exemplo: ////**************** arquivo exemplojtextarea.java /*001*/ package interfacegrafica.componentes; /*002*/ import javax.swing.*; /*003*/ import java.awt.event.*; /*004*/ import java.awt.*; /*005*/ import java.io.*; /*006*/ public class exemplojtextarea extends Janela /*007*/{ /*008*/ private JTextArea texto =new JTextArea(80,80); Prof. Vida (vida@utfpr.edu.br) 33

/*009*/ private JPanel conteudo = new JPanel(); /*010*/ private JPanel conteudo2 = new JPanel(); /*011*/ private JButton btsalvar = new JButton("Salvar"); /*012*/ private JButton btler = new JButton("Ler"); /*013*/ private void lerarquivo(file name) /*014*/ { /*015*/ if (name.exists()) /*016*/ { /*017*/ if (name.isfile()) /*018*/ { /*019*/ try /*020*/ { /*021*/ RandomAccessFile r = new RandomAccessFile(name,"r"); /*022*/ StringBuffer buf = new StringBuffer(); /*023*/ String text; /*024*/ texto.settext(""); /*025*/ while ( (text=r.readline())!= null) /*026*/ texto.append(text + "\n"); /*027*/ } /*028*/ catch (IOException erro) /*029*/ {JOptionPane.showMessageDialog(null /*030*/,"File Error" /*031*/,"Nao foi possivel ler" /*032*/,JOptionPane.ERROR_MESSAGE);} /*033*/ } /*034*/ } /*035*/ } /*036*/ private void salvararquivo(file name) /*037*/ { /*038*/ try{ /*039*/ if (name.exists()) {name.delete();} /*040*/ RandomAccessFile r = new /*041*/ RandomAccessFile(name,"rw"); /*042*/ StringBuffer buf = new StringBuffer(); /*043*/ r.writebytes(texto.gettext()); /*044*/ } /*045*/ catch (IOException erro) /*046*/ {JOptionPane.showMessageDialog(this /*047*/,"File Error" /*048*/,"Erro de Escrita" /*049*/,JOptionPane.ERROR_MESSAGE);} /*050*/ } /*051*/ public exemplojtextarea() /*052*/ { /*053*/ conteudo.setlayout(new BorderLayout()); /*054*/ conteudo2.setlayout(new GridLayout(1,2)); /*055*/ btsalvar.addactionlistener(new AbstractAction() /*056*/ { public void actionperformed(actionevent evt) /*057*/ {salvararquivo(new File("exemplo.txt"));} /*058*/ }); /*059*/ btler.addactionlistener(new AbstractAction() /*060*/ { public void actionperformed(actionevent evt) /*061*/ {lerarquivo(new File("exemplo.txt"));} /*062*/ }); /*063*/ conteudo2.add(btsalvar); Prof. Vida (vida@utfpr.edu.br) 34

/*064*/ conteudo2.add(btler); /*065*/ conteudo.add(conteudo2,"north"); /*066*/ conteudo.add(new JScrollPane(texto),"Center"); /*067*/ Container fundo = getcontentpane(); /*068*/ fundo.add(conteudo); /*069*/ } /*070*/ public static void main(string[] a) /*071*/ { /*072*/ (new exemplojtextarea()).setvisible(true); /*073*/ } /*074*/} 3.3 JPasswordField / Listener do Teclado JPasswordField permite que o usuário entre com uma password. ////**************** arquivo exemplojpassword.java /*001*/ package interfacegrafica.componentes; /*002*/ import javax.swing.*; /*003*/ import java.awt.event.*; /*004*/ import java.awt.*; /*005*/ public class exemplojpassword extends Janela /*006*/ implements KeyListener /*007*/ { //define que a senha terá tamanho de 8. /*008*/ private JPasswordField senha = new JPasswordField(8); // /*009*/ private JPanel conteudo = new JPanel(); /*010*/ private JPanel conteudo2 = new JPanel(); /*011*/ private JPanel conteudo3 = new JPanel(); /*012*/ private JButton btok = new JButton("Verificar"); /*013*/ private JTextField editusuario = new JTextField(); /*014*/ public void keyreleased(keyevent evt) {} /*015*/ public void keytyped(keyevent evt){ } /*016*/ public void keypressed(keyevent evt) /*017*/ {if (evt.getkeycode() == java.awt.event.keyevent.vk_enter) /*018*/ { conteme();} /*019*/ } /*020*/ private void conteme() /*021*/ { System.out.println("Usuario = " /*022*/ + editusuario.gettext() /*023*/ //o compilador vai fornecer um warning para gettext(). /*024*/ + "\n Senha=" + senha.gettext()); } /*025*/ private void funcbutton() Prof. Vida (vida@utfpr.edu.br) 35

/*026*/ { /*027*/ btok.setmnemonic('v'); /*028*/ btok.addactionlistener(new AbstractAction() /*029*/ { public void actionperformed(actionevent evt) /*030*/ {conteme();} }); /*031*/ } /*032*/ private void monitorteclado() /*033*/ { /*034*/ senha.addkeylistener(this); /*035*/ btok.addkeylistener(this); /*036*/ } /*037*/ public exemplojpassword(string texto) /*038*/ { /*039*/ super(texto); /*040*/ setsize(200,150); // carrega as funcoes do listener. /*041*/ monitorteclado(); //modifica o caracter de retorno visual. /*042*/ senha.setechochar('@'); /*043*/ conteudo.setlayout(new BorderLayout()); /*044*/ conteudo2.setlayout(new GridLayout(2,2)); /*045*/ conteudo3.setlayout(new FlowLayout(FlowLayout.CENTER)); /*046*/ conteudo2.add(new JLabel("Usuario:")); /*047*/ conteudo2.add(editusuario); /*048*/ conteudo2.add(new JLabel("Senha:")); /*049*/ conteudo2.add(senha); // carrega funcoes no botao /*050*/ funcbutton(); /*051*/ conteudo3.add(btok); /*052*/ conteudo.add(conteudo2,"center"); /*053*/ conteudo.add(conteudo3,"south"); /*054*/ Container fundo = getcontentpane(); /*055*/ fundo.add(conteudo); // seta o foco para o primeiro componente de edicao. /*056*/ editusuario.requestfocus(); /*057*/ } /*058*/ public static void main(string[] a) /*059*/ { /*060*/ (new exemplojpassword("log in")).setvisible(true); /*061*/ } /*062*/ } Desafio: Pesquisar/Criar exemplos para os eguintes componentes visuais: JCheckBox JRadioButton JButtonGroup JList Prof. Vida (vida@utfpr.edu.br) 36

Desafio 2: Codificar em Java interfaces similares a: a) b) Prof. Vida (vida@utfpr.edu.br) 37