1 / 31

Java Básico

Criação de telas com Swing Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.eti.br Novembro/2005. Java Básico. JFC – Java Foundation Classes. Swing Look and feel Java 2D Drag and Drop. GUI – Graphical User Interface.

Lucy
Download Presentation

Java Básico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Criação de telas com Swing Marco Antonio, Arquiteto de Software – TJDF ma@marcoreis.eti.br Novembro/2005 Java Básico

  2. JFC – Java Foundation Classes • Swing • Look and feel • Java 2D • Drag and Drop

  3. GUI – Graphical User Interface • As regras de usabilidade e o protótipo de tela devem ser definidos antes do desenvolvimento. • Várias estratégias para implementação. • Valida as entradas do usuário (formatação de campos). • Informa aos usuários sobre problemas no sistema (erros de rede, indisponibilidade dos servidores). • Responde a eventos do usuário (clique do mouse, arrastar e soltar, mudança de campo). • A criação de telas com swing pode ser um trabalho cansativo. É recomendado que se utilize uma ferramenta para a criação de telas profissionais.

  4. Tela de cadastro de pessoa • Para a classe Pessoa (nome, endereco, telefone, cpf) crie um protótipo de tela com as funcionalidades de inclusão, alteração, exclusão e fechamento.

  5. Swing • Container (contém outros componentes)‏ • Telas, painéis • Componentes de controle • Botões, menus, textos, etc.

  6. Componentes de controle • Botões – respondem a cliques do mouse • Rótulos – mostra informações sobre os controles da tela • Texto – recupera dados digitados pelo usuário • Listas – possibilita a seleção de vários itens • Caixas de combinação – possibilita a seleção de um dos itens • Caixas de seleção – funcionalidade de ligado, desligado

  7. JFrame • Ponto inicial para a construção de telas. • Para utilizar, importe o pacote javax.swing.*; • Todas as telas são subclasses de JFrame. • Crie os componentes gráficos e adicione ao conteúdo da tela através do getContentPane().add(novoComponente); • Dimensione a tela através do setSize(???, ???) ou pack(); • Torne a tela visível – setVisible(true).

  8. PrimeiraTelaSwing import javax.swing.*; //pacote obrigatório para usar o swing public class PrimeiraTelaSwing extends JFrame { //subclasse de JFrame public PrimeiraTelaSwing() { //utilize o construtor para dimensionar/mostrar a tela setSize(100,100); //definindo um tamanho inicial setVisible(true); //torna a tela visível, pois o padrão é invisível } }

  9. TestePrimeiraTelaSwing public class TestePrimeiraTelaSwing { //essa outra classe apenas levanta a tela public static void main(String[] args) { //torna a classe executável //chama o construtor da nossa tela //o construtor irá dimensionar e mostrar a janela PrimeiraTelaSwing tela = new PrimeiraTelaSwing(); } }

  10. JButton • Recupera o clique do usuário. • Por padrão, não tem comportamento. • Utilize a estrutura abaixo para criar um JButton: • JButton btnGravar = new JButton(“Gravar”); • JButton btnFechar = new JButton(“Fechar”);

  11. PrimeiraTelaSwing + JButton import java.awt.*; //necessário para o flowlayout import javax.swing.*; public class PrimeiraTelaSwing extends JFrame { JButton btnGravar = new JButton("Gravar"); //declare os objetos no início da classe JButton btnFechar = new JButton("Fechar"); //utilize o construtor para adicionar os objetos na tela public PrimeiraTelaSwing() { setLayout(new FlowLayout()); //*posiciona os componentes um após o outro getContentPane().add(btnGravar); //adiciona o primeiro botão getContentPane().add(btnFechar); //adiciona o segundo botão setVisible(true); pack(); //dimensiona a tela baseando-se num tamanho padrão } } // *o gerenciamento de layout é discutido em um capítulo a parte.

  12. JTextField • A caixa de texto captura informação digitada pelo usuário. • JTextField txtNome = new JTextField(); • JTextField txtEndereco = new JTextField(); • Caixas de texto em branco, sem tamanho definido • JTextField txtNome = new JTextField(null, 20); • JTextField txtEndereco = new JTextField(null, 30); • O primeiro parâmetro representa o texto (null) e o segundo é o tamanho.

  13. PrimeiraTelaSwing + JButton import java.awt.*; import javax.swing.*; public class PrimeiraTelaSwing extends JFrame { JTextField txtNome = new JTextField(null, 20); JTextField txtEndereco = new JTextField(null, 30); JButton btnGravar = new JButton("Gravar"); JButton btnFechar = new JButton("Fechar"); public PrimeiraTelaSwing() { setLayout(new FlowLayout()); //os componentes serão apresentados na tela nessa ordem getContentPane().add(txtNome); getContentPane().add(txtEndereco); getContentPane().add(btnGravar); getContentPane().add(btnFechar); setVisible(true); pack(); } }

  14. JLabel • O rótulo torna uma tela mais fácil de usar, na medida em que identifica os componentes com um texto explicativo. • Utilize o exemplo abaixo para criar rótulos: • JLabel lblNome = new JLabel(“Nome: ”); • JLabel lblEndereco = new JLabel(“Endereço: ”);

  15. PrimeiraTelaSwing + JLabel import java.awt.*; import javax.swing.*; public class PrimeiraTelaSwing extends JFrame { JLabel lblNome = new JLabel("Nome"); JLabel lblEndereco = new JLabel("Endereço"); JTextField txtNome = new JTextField(null, 20); JTextField txtEndereco = new JTextField(null, 30); JButton btnGravar = new JButton("Gravar"); JButton btnFechar = new JButton("Fechar"); public PrimeiraTelaSwing() { //nesse caso, vamos usar 4 linhas e 2 colunas setLayout(new GridLayout(4, 2)); getContentPane().add(lblNome); getContentPane().add(txtNome); getContentPane().add(lblEndereco); getContentPane().add(txtEndereco); getContentPane().add(btnGravar); getContentPane().add(btnFechar); setVisible(true); pack(); } }

  16. JComboBox • Caixa de combinação onde o usuário pode escolher um item entre vários possíveis. • É criado em duas etapas: primeiro crie os itens que farão parte da combo, depois, crie a combo. Veja o exemplo: • String[] sexos = {“Masculino”, “Feminino”}; • JComboBox cboSexo = new JComboBox(sexos);

  17. PrimeiraTelaSwing + JComboBox import java.awt.*; import javax.swing.*; public class PrimeiraTelaSwing extends JFrame { JLabel lblNome = new JLabel("Nome"); JLabel lblEndereco = new JLabel("Endereço"); JLabel lblSexo = new JLabel("Sexo"); JTextField txtNome = new JTextField(null, 20); JTextField txtEndereco = new JTextField(null, 30); JButton btnGravar = new JButton("Gravar"); JButton btnFechar = new JButton("Fechar"); String [] sexos = {"Masculino", "Feminino"}; JComboBox cboSexo = new JComboBox(sexos);

  18. PrimeiraTelaSwing + JComboBox public PrimeiraTelaSwing() { setLayout(new FlowLayout()); getContentPane().add(lblNome); getContentPane().add(txtNome); getContentPane().add(lblEndereco); getContentPane().add(txtEndereco); getContentPane().add(lblSexo); getContentPane().add(cboSexo); getContentPane().add(btnGravar); getContentPane().add(btnFechar); setVisible(true); pack(); } }

  19. Dúvidas

  20. Exercícios • Implemente a tela de cadastro de pessoa que iniciamos no exemplo. • Crie a classe TelaDeCadastroDePessoa e dentro do pacote com.javabasico.swing • Crie uma classe para testar a tela. • Teste o pack() e o setSize() nas diversas situações que vimos e analise o comportamento da tela. • Altere o gerenciador de layout entre FlowLayout e GridLayout e analise o comportamento da tela.

  21. TelaDeCadastroDePessoa package com.javabasico.swing; import java.awt.*; import javax.swing.*; public class TelaDeCadastroDePessoa extends JFrame { JLabel lblNome = new JLabel("Nome: "); JLabel lblEndereco = new JLabel("Endereço: "); JLabel lblTelefone = new JLabel("Telefone: "); JLabel lblCpf = new JLabel("Cpf: "); JLabel lblSexos = new JLabel("Sexo: "); JTextField txtNome = new JTextField(null, 20); JTextField txtEndereco = new JTextField(null, 20); JTextField txtTelefone = new JTextField(null, 20); JTextField txtCpf = new JTextField(null, 20); String[] sexos = {"Masculino", "Feminino"}; JComboBox cboSexo = new JComboBox(sexos); JButton btnGravar = new JButton("Gravar"); JButton btnFechar = new JButton("Fechar");

  22. TelaDeCadastroDePessoa public TelaDeCadastroDePessoa() { Container c = getContentPane(); setLayout(new GridLayout(0, 2)); setTitle("Cadastro de Pessoa"); c.add(lblNome); c.add(txtNome); c.add(lblEndereco); c.add(txtEndereco); c.add(lblTelefone); c.add(txtTelefone); c.add(lblCpf); c.add(txtCpf); c.add(lblSexos); c.add(cboSexo); c.add(btnGravar); c.add(btnFechar); setVisible(true); pack(); } }

  23. TesteDaTelaDeCadastroDePessoa package com.javabasico.swing; public class TesteDaTelaDeCadastroDePessoa { public static void main(String[] args) { new TelaDeCadastroDePessoa(); } }

  24. Exercícios • Implemente uma tela para cadastro de aeronaves. • Utilize todos os componentes mostrados até agora. • Atributos da tela: • Finalidade do avião (transporte de carga, passageiros)‏ • Modelo • Quantidade de assentos • Autonomia

  25. TelaDeCadastroDeAeronave package com.javabasico.swing; import java.awt.*; import javax.swing.*; public class TelaDeCadastroDeAeronave extends JFrame { JLabel lblFinalidade = new JLabel("Finalidade: "); JLabel lblModelo = new JLabel("Modelo: "); JLabel lblQuantidadeDeAssentos = new JLabel("Quantidade de assentos: "); JLabel lblAutonomia = new JLabel("Autonomia: "); String finalidades[] = {"Carga", "Passageiro"}; JComboBox cboFinalidade = new JComboBox(finalidades); JTextField txtModelo = new JTextField(); JTextField txtQuantidadeDeAssentos = new JTextField(); JTextField txtAutonomia = new JTextField(); JButton btnGravar = new JButton("Gravar"); JButton btnFechar = new JButton("Fechar");

  26. TelaDeCadastroDeAeronave public TelaDeCadastroDeAeronave() { setLayout(new GridLayout(0, 2)); Container c = getContentPane(); setTitle("Cadastro de Aeronave"); c.add(lblFinalidade); c.add(cboFinalidade); c.add(lblModelo); c.add(txtModelo); c.add(lblQuantidadeDeAssentos); c.add(txtQuantidadeDeAssentos); c.add(lblAutonomia); c.add(txtAutonomia); c.add(btnGravar); c.add(btnFechar); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); pack(); } }

  27. TesteDaTelaDeCadastroDeAeronave package com.javabasico.swing; public class TesteDaTelaDeCadastroDeAeronave { public static void main(String[] args) { new TelaDeCadastroDeAeronave(); } }

  28. Exercícios • Crie uma tela para cadastro de médico com os atributos nome, especialidade (Combo), número do crm.

  29. TelaDeCadastroDeMedico package com.javabasico.swing; import java.awt.*; import javax.swing.*; public class TelaDeCadastroDeMedico extends JFrame { JLabel lblNome = new JLabel("Nome: "); JLabel lblEspecialidade = new JLabel("Especialidade: "); JLabel lblNumeroDoCrm = new JLabel("Número do Crm: "); String[] especialidade = {"Cardiologia", "Clínica Geral", "Ortopedia"}; JComboBox cboEspecialidade = new JComboBox(especialidade); JTextField txtNome = new JTextField(); JTextField txtNumeroDoCrm = new JTextField();

  30. TelaDeCadastroDeMedico public TelaDeCadastroDeMedico() { setLayout(new GridLayout(0, 2)); Container c = getContentPane(); setTitle("Cadastro de Médico"); c.add(lblNome); c.add(txtNome); c.add(lblEspecialidade); c.add(cboEspecialidade); c.add(lblNumeroDoCrm); c.add(txtNumeroDoCrm); setVisible(true); pack(); } }

  31. TesteDaTelaDeCadastroDeMedico package com.javabasico.swing; public class TesteDaTelaDeCadastroDeMedico { public static void main(String[] args) { new TelaDeCadastroDeMedico(); } }

More Related