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



Documentos relacionados
Tratamento de Eventos

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

MÓDULO 4 SWING Parte 3

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

Programação Gráfica em Java.

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

Curso de Aprendizado Industrial Desenvolvedor WEB

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

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

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

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

Interface Gráficas Parte I. Bruno Crestani Calegaro

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

Técnicas de Programação II

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

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

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

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

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

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

Programação Orientada a Objetos

8. Interfaces Gráficas de Usuário

Desenvolvimento de Aplicações Desktop

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

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

Desenvolvendo aplicações

Gerenciadores de Layouts

Programação Visual em Java

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

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

Pacote Java Swing Parte 1

1 Criando um aplicativo visual em Java

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

Introdução à Programação. Interfaces Gráficas

Interface Gráfica. Prof. Marcelo Cohen

Aplicações Gráficas com AWT

Criação de telas com Swing

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

Programação Orientada a Objetos II

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

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

Interfaces Gráficas: Interações Complexas

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

Adicionando Caixas de Verificação no seu Programa Java

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

Como construir aplicaçõ e applets

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

Roteiro para criação de Applet

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

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

Construção de Interfaces Gráficas

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

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

Curso Java Starter. 1

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

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

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

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

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

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

Programação Orientada a Objetos em Java

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Programação de Aplicações Gráficas em Java

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

Gerenciadores de Layout Parte 1

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

Especialização em Engenharia de Software - CEUT

Gestão de eventos do Rato e teclado

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

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

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Manual do Contribuidor. Portal de Internet. Projeto: Novo Portal de internet

Natureza do Software e dos Sistemas

Orientação a Objetos

Microsoft Office Excel 2007

Sistema de Recursos Humanos

Programação Orientada a Objetos II

Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Bem vindo! Esta é a tela inicial do Webmail da Universidade federal de Juiz de Fora. O link de acesso é:

Gerente de Tecnologia: Ricardo Alexandre F. de Oliveira Marta Cristiane Pires M. Medeiros Mônica Bossa dos Santos Schmid WORD 2007

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

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

Programação em Rede JDBC

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

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

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

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

Elaborando as Interfaces Aulas 43, 44 e 45

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

Transcrição:

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

Interface Gráfica com o Usuário Os elementos gráficos utilizados estão no pacote javax.swing.* As interfaces serão construídas nos objetos Containers (painéis de conteúdo) contidos nos JFrames e nos JApplets Um objeto Container é capaz de receber e exibir na tela componentes da interface gráfica com o usuário Ele está no pacote java.awt.*, mas não precisa ser importado, pois é utilizado indiretamente pelas classes JFrames e JApplets

Interface Gráfica com o Usuário import javax.swing.*; public class ContainerApplet extends JApplet{ public void init (){ Temos um applet vazio. Sua área de trabalho é um Container Container

Interface Gráfica com o Usuário import javax.swing.*; public class Aplicativo extends JFrame{ public Aplicativo(){ getcontentpane().setlayout(null); setbounds(10,10,300,300); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); public static void main(string args[]){ Aplicativo window = new Aplicativo(); Na execução aparecerá um janela padrão de aplicativo do Sistema Operacional

Interface Gráfica com o Usuário Neste exemplo, temos um aplicativo que recebe por herança as características de JFrame getcontentpane().setlayout(null); define o gerenciador de Layout; quando null todos os componentes devem ter o setbounds (inclusive a janela). setbounds(10,10,300,300) posiciona (10,10) e dimensiona a janela (300,300) setvisible(true); deixa a tela visível para o usuário setdefaultcloseoperation(jframe.exit_on_close) retira o programa da memória

Interface Gráfica com o Usuário Elementos da GUI (Graphical User Interface) são objetos de classes já definidas dentro nos pacotes Java, os quais são adicionadas aos Containers. Estudaremos inicialmente 2 componentes: JButton botão JTextField caixa de texto

Interface Gráfica com o Usuário Passos para criação de uma interface gráfica: 1) Criar a variável que representará o elemento gráfico 2) Configurar o gerenciador de layout 3) Criar o objeto do elemento gráfico 4) Configurar o objeto 5) Adicioná-lo ao Container 6) Para cada elemento gráfico esses passos devem ser executados, com exceção do passo 2 7) Configurar a tela (só aplicativos) Obs: usualmente, os passos de 2 a 6 são executados no método construtor para aplicativos e no init para applets

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. import javax.swing.*; import java.awt.*; public class ContainerAplicativo extends JFrame{ JButton botao; //variavel para um botão JTextField caixatexto; //variavel para uma caixa de texto public ContainerAplicativo(){ getcontentpane().setlayout(null); //configura o Container botao = new JButton(); // criação do objeto botao.settext("ok"); // configuração do objeto botao.setbounds(60,50,80,30); add(botao); //adicionando o objeto ao container caixatexto = new JTextField(); // criação do objeto caixatexto.settext("texto de dentro"); // configuração do objeto caixatexto.setbounds(25,10,150,30); add(caixatexto); //adicionando o objeto ao container setbounds(20,20, 200,150); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); public static void main(string args[]){ ContainerAplicativo janela = new ContainerAplicativo();

Interface Gráfica com o Usuário 4 e 5 criam as variáveis referentes aos elementos gráficos (Passso 1) 7 gerenciador de layout = null (Passso 2) 8 cria o objeto botão (Passso 3) 9-10 configura o objeto botão (Passso 4) 11 adiciona o botão à tela (Passso 5) 12 a 14 idem 9 a 11, mas para a caixa de texto (Passo 6) 16 a 18 configuram a tela (Passso 7)

Interface Gráfica com o Usuário Observações: Linha 7 o método getcontentpane() retorna uma referência para o Container do JApplet ou do JFrame Ele é implementado nessas classe e herdado pelas filhas Linha 8 o métodos setlayout do Container determina a forma de inserção dos elementos gráficos.

Interface Gráfica com o Usuário Resultado da execução:

Interface Gráfica com o Usuário A seguir, o mesmo programa em forma de applet As instruções do método construtor passam para o método init Não é necessário a configuração da tela. O tamanho da tela é configurado no arquivo.html O restante é igual!

import javax.swing.*; import java.awt.*; public class ContainerApplet extends JApplet{ JButton botao; //variavel para um botão JTextField caixatexto; //variavel para uma caixa de texto public void init(){ getcontentpane().setlayout( null); //configura o Container botao = new JButton(); // criação do objeto botao.settext("ok"); // configuração do objeto botao.setbounds(60,50,80,30); add(botao); //adicionando o objeto ao container caixatexto = new JTextField(20); // criação do objeto caixatexto.settext("texto de dentro"); // configuração do objeto caixatexto.setbounds(25,10,150,30); add(caixatexto); //adicionando o objeto ao container setbounds(20,20, 200,150); setvisible(true);

Interface Gráfica com o Usuário Resultado da execução com Appletviewer:

Modelo de Tratamento de Eventos Eventos são acontecimentos que ocorrem com programas, exemplos: Usuário pressionou o botão direito do mouse sobre um componente Usuário largou o botão O programa iniciou O programa terminou O mouse moveu sobre um componente O usuário digitou algo em um campo da tela O usuário selecionou um item no menu

Modelo de Tratamento de Eventos Os eventos são tratados por objetos denominados listeners Existe objetos listeners para tratar eventos do mouse, outros para tratar eventos do teclado, etc O objeto listener que utilizaremos trata o clique do mouse sobre um determinado elemento As classes desses objetos estão no pacote java.awt.event.*; Segue exemplo

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ComEvento extends JFrame{ JButton botao; JTextField caixatexto; public ComEvento(){ getcontentpane().setlayout(null); Handler objetolistener = new Handler(); caixatexto = new JTextField(); caixatexto.settext("texto de dentro"); caixatexto.setbounds(10,10,150,30); add(caixatexto); botao = new JButton(); botao.settext("ok"); botao.addactionlistener(objetolistener); botao.setbounds(45,50,70,30); add(botao); setsize(200,130); setvisible(true);

public static void main(string args[]){ ComEvento janela = new ComEvento(); public class Handler implements ActionListener{ public void actionperformed (ActionEvent event){ if (event.getsource() == botao) JOptionPane.showMessageDialog(null,caixatexto.getText());

Modelo de Tratamento de Eventos O exemplo mostrado trata o evento de clicar o botão Quando ele ocorre um JOptionPane aparece na tela contendo o texto que está na caixa de texto Para a utilização de um objeto listener deve-se: criar uma classe que implementa ActionListener criar um objeto desta classe e associá-lo a cada elemento que se deseja manipular os eventos

Inserindo Figuras Objetos da classe Icon são utilizados para inserir figuras em componentes da GUI Tais componentes podem ser botões, labels, etc As figuras podem ser no formato.gif,.jpg e.png O arquivo da figura deve está na pasta raiz do projeto Exemplo:

import javax.swing.*; public class ComFigura extends JFrame { Icon fig; JLabel lbl; public ComFigura(){ getcontentpane().setlayout(null); fig = new ImageIcon("figura.png"); lbl = new JLabel(); lbl.seticon(fig); lbl.setbounds(10,10,200,200); add(lbl); setsize(240,260); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); public static void main (String args[]){ ComFigura aplicacao = new ComFigura();

Tratando eventos do Mouse Duas classes tratam os eventos do mouse. Elas possuem métodos associados a cada tipo de evento, são eles: MouseMotionListener mousedragged: depois do arraste» Ocorre um mousepressed antes e um mouserelease depois mousemoved: ponteiro do mouse movido quando o ponteiro dentro dos limites do objeto

Tratando eventos do Mouse MouseListener mousepressed: botão do mouse é precionado mouseclicked: botão do mouse é liberado sem movimento mousereleased: botão do mouse é liberado com movimento mouseentered: ponteiro do mouse entra nos limites físicos do componente mouseexited: ponteiro do mouse sai dos limites físicos do componente

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class EventosMouse extends JFrame{ JLabel statusbar; public EventosMouse(){ getcontentpane().setlayout(null); statusbar = new JLabel("Início"); statusbar.setbounds(10, 10, 300, 30); add(statusbar); Handler ol = new Handler(); addmouselistener(ol); addmousemotionlistener(ol); setbounds(10,10,300,300); setsize(300,200); setvisible(true); public static void main(string args[]){ EventosMouse j = new EventosMouse(); j.setdefaultcloseoperation(jframe.exit_on_close);

public class Handler implements MouseListener, MouseMotionListener{ public void mousepressed(mouseevent event){ statusbar.settext("mousepressed : [" + event.getx() + "," + event.gety() + "]"); public void mouseclicked(mouseevent event){ statusbar.settext("mouseclicked : [" + event.getx() + "," + event.gety() + "]"); public void mousereleased(mouseevent event){ statusbar.settext("mousereleased : [" + event.getx() + "," + event.gety() + "]"); public void mouseentered(mouseevent event){ JOptionPane.showMessageDialog(null,"mouseEntered"); public void mouseexited(mouseevent event){ JOptionPane.showMessageDialog(null,"mouseExited"); public void mousedragged(mouseevent event){ statusbar.settext("mousedragged : [" + event.getx() + "," + event.gety() + "]"); public void mousemoved(mouseevent event){ statusbar.settext("mousemoved : [" + event.getx() + "," + event.gety() + "]");

Classes Adaptadoras Para evitar a implementação de todos os métodos das interfaces Listener podemos utilizar as classes adaptadoras. Para cada interface existe uma classe correspondente: MouseListener : MouseAdapter MouseMouseListener : MouseMotionAdapter Para utilização de tal classes troque implements mouselistener por extends mouseadapter

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ClassesAdaptadoras extends JFrame{ int x=0, y=0; public ClassesAdaptadoras(){ getcontentpane().setlayout(null); Handler obj = new Handler(); addmousemotionlistener(obj); setsize(200,200); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); repaint(); public void paint(graphics g){ g.filloval(x,y,4,4); public static void main(string args[]){ ClassesAdaptadoras janela = new ClassesAdaptadoras(); public class Handler extends MouseMotionAdapter{ public void mousedragged(mouseevent event){ x = event.getx(); y = event.gety(); repaint();

Posicionando componentes no container O Java possui gerenciadores de Layout, são eles: FlowLayout: fluxo de componentes BorderLayout: organiza em 5 regiões (NORTH, SOUTH, EAST, WEST, CENTER) GridLayout: divide o container em células GridBagLayout: idem GridLayout, mas os componentes podem ocupar mas de uma célula CardLayout: organiza como um pilha de cartas, só o primeiro é visível (como abas) BoxLayout

FlowLayout Um componente ao lado do outro Se não couber, o componente vai para a próxima linha Veja Exemplo

import java.awt.*; import javax.swing.*; public class TesteLayout extends JFrame{ JTextField jtfnome,jtftelefone; JButton jtfok; public TesteLayout(){ getcontentpane().setlayout(new FlowLayout()); jtfnome = new JTextField(10); add(jtfnome); jtftelefone = new JTextField(15); add(jtftelefone); jtfok = new JButton("Botão OK"); add(jtfok); setvisible(true); setsize(300,300); public static void main(string args[]){ new TesteLayout();

BorderLayout Possui posições predefinidas

import java.awt.*; import javax.swing.*; public class ComBorder extends JFrame{ JTextField jtfnome,jtftelefone; JButton jtfok; public ComBorder(){ getcontentpane().setlayout(new BorderLayout()); jtfnome = new JTextField(10); add(jtfnome,borderlayout.south); jtftelefone = new JTextField(15); add(jtftelefone,borderlayout.north); jtfok = new JButton("Botão OK"); add(jtfok,borderlayout.line_end); setvisible(true); setsize(300,300); public static void main(string args[]){ new ComBorder();

GridLayout Divide a tela em células como uma tabela O componente ocupa toda a célula Construturores GridLayout(linha,coluna) GridLayout(linha,coluna,hgap,vgap) Gap: espação entre linhas ou colunas Obs: 0 para linhas especifica quantas linhas forem necessárias

import java.awt.*; import javax.swing.*; public class ComGridLayout extends JFrame{ JTextField jtfnome,jtftelefone; JButton jtfok; public ComGridLayout (){ getcontentpane().setlayout(new GridLayout(0,2,30,30)); jtfnome = new JTextField(10); add(jtfnome); jtftelefone = new JTextField(15); add(jtftelefone); jtfok = new JButton("Botão OK"); add(jtfok); setvisible(true); setsize(300,300); public static void main(string args[]){ new ComGridLayout();

Manipulando Várias Telas O exemplo a seguir possui Tela principal (PrincipalCor) Tela MudaCor: com dois botões onde é possível mudar a cor da tela PrincipalCor.

Manipulando Várias Telas Classe PrincipalCor possui: Um objeto que corresponde a segunda tela MudarCor tela = new MudarCor(this); Um método que controla qual tela será exibida public void showprincipal(){ tela.setvisible(false); Métodos para mudar a cor public void azul(){ getcontentpane().setbackground(color.blue); public void amarelo(){ getcontentpane().setbackground(color.yellow);

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class PrincipalCor extends JFrame { JButton jbtsair, jbtoutra; private String cor = "Default"; MudarCor tela = new MudarCor(this); public PrincipalCor(){ getcontentpane().setlayout(null); settitle("tela Principal"); Handler obj = new Handler(); jbtoutra = new JButton("Outra"); jbtoutra.setbounds(10,10,100,30); jbtoutra.addactionlistener(obj); add(jbtoutra); jbtsair = new JButton("Sair"); jbtsair.setbounds(130,10,100,30); jbtsair.addactionlistener(obj); add(jbtsair); setbounds(10,10,300,300); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close);

public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource()==jbtsair) System.exit(0); if(e.getsource()==jbtoutra) tela.setvisible(true); public void mudacor(string color){ cor = color; if(color.equals("azul")) getcontentpane().setbackground(color.blue); if(color.equals("amarelo")) getcontentpane().setbackground(color.yellow); public String getcor(){ return cor; public void showprincipal(){ tela.setvisible(false); public static void main(string[] args) { new PrincipalCor();

Manipulando Várias Telas Classe MudaCor: Extends JDialog, poia possui o método showdialog : true só essa tela pode ser clicada false a primeira pode ser clicada Recebe no construtor um objeto do tipo PrincipalCor e coloca esse objeto como global PrincipalCor pc; public MudarCor(PrincipalCor pc){ this.pc = pc; Chama os métodos do objeto pc: pc.mudacor("azul"); pc.showprincipal(); settitle("cor atual: " + pc.getcor());

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MudarCor extends JDialog{ JButton jbtazul, jbtamarelo, jbtfechar; PrincipalCor pc; public MudarCor(PrincipalCor pc){ this.pc = pc; getcontentpane().setlayout(null); settitle("cor atual: " + pc.getcor()); Handler obj = new Handler(); jbtazul = new JButton("Azul"); jbtazul.setbounds(10,10,100,30); jbtazul.addactionlistener(obj); add(jbtazul); jbtamarelo = new JButton("Amarelo"); jbtamarelo.setbounds(130,10,100,30); jbtamarelo.addactionlistener(obj); add(jbtamarelo); jbtfechar = new JButton("Fechar"); jbtfechar.setbounds(70,60,100,30); jbtfechar.addactionlistener(obj); add(jbtfechar); setbounds(150,200,255,150); setvisible(false); setmodal(true);

public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource() == jbtazul){ pc.mudacor("azul"); if(e.getsource() == jbtamarelo){ pc.mudacor("amarelo"); if(e.getsource() == jbtfechar){ pc.showprincipal(); //setvisible(false); settitle("cor atual: " + pc.getcor());

Informações Entre Várias Telas O exemplo a seguir possui um Vector na tela principal e utiliza duas outras telas para cadastra objetos nesse Vector Utiliza a seguinte estrutura de classes Cliente PessoaFisica PessoaJuridica Verificar que novos objetos são criados no Vector a partir das telas de cadastro, utilizando-se para isso chamadas de métodos da tela principal

public abstract class Cliente { private long codigo; public long getcodigo() { return codigo; public void setcodigo(long codigo) { this.codigo = codigo; public abstract String todosdados(); public class PessoaFisica extends Cliente{ private String cpf; public String getcpf() { return cpf; public void setcpf(string cpf) { this.cpf = cpf; public String todosdados(){ return "Código:"+getCodigo() + " CPF:" + getcpf(); public class PessoaJuridica extends Cliente{ private String cnpj; public String getcnpj() { return cnpj; public void setcnpj(string cnpj) { this.cnpj = cnpj; public String todosdados(){ return "Código:"+getCodigo() + " CNPJ" + getcnpj();

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.vector; public class PrincipalClientes extends JFrame { JButton jbtpf, jbtpj; Vector <Cliente> meusclientes = new Vector<Cliente>(); CadastraPF pf = new CadastraPF(this); CadastraPJ pj = new CadastraPJ(this); public PrincipalClientes(){ getcontentpane().setlayout(null); settitle("tela Principal"); Handler obj = new Handler(); jbtpf = new JButton("Pessoa Fisica"); jbtpf.setbounds(10,10,150,30); jbtpf.addactionlistener(obj); add(jbtpf); jbtpj = new JButton("Pessoa Jurídica"); jbtpj.setbounds(10,60,150,30); jbtpj.addactionlistener(obj); add(jbtpj); setbounds(10,10,300,300); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); public void cadastra(cliente c){ meusclientes.add(c);

public void showprincipal(){ pf.setvisible(false); pj.setvisible(false); public void showcadastrapj(){ pf.setvisible(false); pj.setvisible(true); public void showcadastrapf(){ pf.setvisible(true); pj.setvisible(false); public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource()==jbtpf){ showcadastrapf(); if(e.getsource()==jbtpj){ showcadastrapf(); public static void main(string[] args) { new PrincipalClientes();

public class CadastraPF extends JDialog{ JButton jbtcadastrar, jbtfechar; JTextField jtfcodigo, jtfcpf; PrincipalClientes pc; public CadastraPF(PrincipalClientes pc){ this.pc = pc; public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource() == jbtcadastrar){ PessoaFisica aux = new PessoaFisica(); aux.setcodigo(long.parselong(jtfcodigo.gettext())); aux.setcpf(jtfcpf.gettext()); pc.cadastra(aux); jtfcodigo.settext(""); jtfcpf.settext(""); if(e.getsource() == jbtfechar){ pc.showprincipal();

Exercícios Crie a tela para cadastro de PessoaJuridica Crie uma tela que exibe todos os dados de todos os objetos cadastrados no Vector

package trataclientes; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.vector; public class PrincipalClientes extends JFrame { JButton jbtpf, jbtpj, jbtexibe; Vector <Cliente> meusclientes = new Vector<Cliente>(); CadastraPF pf = new CadastraPF(this); CadastraPJ pj = new CadastraPJ(this); public PrincipalClientes(){ getcontentpane().setlayout(null); settitle("tela Principal"); Handler obj = new Handler(); jbtpf = new JButton("Pessoa Fisica"); jbtpf.setbounds(10,10,150,30); jbtpf.addactionlistener(obj); add(jbtpf); jbtpj = new JButton("Pessoa Jurídica"); jbtpj.setbounds(10,60,150,30); jbtpj.addactionlistener(obj); add(jbtpj); jbtexibe = new JButton("Exibe"); jbtexibe.setbounds(10,110,150,30); jbtexibe.addactionlistener(obj); add(jbtexibe); setbounds(110,10,300,300); setvisible(true); setdefaultcloseoperation(jframe.exit_on_close); public void cadastra(cliente c){ meusclientes.add(c);

public void showprincipal(){ pf.setvisible(false); pj.setvisible(false); public void showcadastrapj(){ pf.setvisible(false); pj.setvisible(true); public void showcadastrapf(){ pf.setvisible(true); pj.setvisible(false); public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource()==jbtpf){ showcadastrapf(); if(e.getsource()==jbtpj){ showcadastrapf(); if(e.getsource()==jbtexibe){ new ExibeDados(meusclientes); public static void main(string[] args) { new PrincipalClientes();

package trataclientes; import java.awt.event.*; import java.util.vector; import javax.swing.*; public class ExibeDados extends JDialog { JTextArea jtadados; JButton jbtfechar; Vector<Cliente> clientes; public ExibeDados(Vector<Cliente>c){ clientes = c; getcontentpane().setlayout(null); Handler obj = new Handler(); jbtfechar = new JButton("Fechar"); jbtfechar.setbounds(80,270,100,30); jbtfechar.addactionlistener(obj); add(jbtfechar); jtadados = new JTextArea(); jtadados.setbounds(10,10,250,250); jtadados.settext(todosdados()); add(jtadados); setbounds(100,100,300,300); setvisible(true); setmodal(true);

public String todosdados(){ String s = ""; for(int i=0;i< clientes.size();i++){ s = s + "\n" + clientes.get(i).todosdados(); return s; public class Handler implements ActionListener{ public void actionperformed(actionevent e){ if(e.getsource() == jbtfechar){ setvisible(false);