Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Programação Orientada a Objetos Professora : Jane * Interface Gráfica com Swing Aula 1 Professora: Jane Mestre em Engenharia de Sistemas e Computação COPPE/UFRJ Programação Orientada a Objetos Professora : Jane * Introdução Revisão Uma interface gráfica com o usuário ou GUI (lê-se : “gui”) fornece um mecanismo amigável ao usuário para interagir com o aplicativo. Exemplo de GUI : janela do Internet Explorer As GUIs são construídas a partir de componentes GUI. Tais componentes são chamados às vezes de controles ou widgets (abrevia-se : window gadgets). Um componente GUI é um objeto com que o usuário interage via mouse, teclado ou outro formulário de entrada, como reconhecimento de voz. JFC (Java Foundation Classes) são um conjunto de componentes e serviços GUI que simplificam o desenvolvimento de aplicações para desktop e para internet/intranet. Programação Orientada a Objetos Professora : Jane * JFC contém AWT (Abstract Window Toolkit) Swing Programação Orientada a Objetos Professora : Jane * Entrada/Saída - GUI simples com a classe JOptionPane do pacote javax.swing A classe JOptionPane está no pacote javax.swing que deve ser importado. É possível também usar o seguinte (selecionar todo o pacote e deixar o trabalho de carregar a classe, feito pelo compilador): import javax.swing.*; Exemplo: import javax.swing.JOptionPane; public class Mensagem { public static void main (String[] args) { //comando para a caixa de diálogo JOptionPane.showMessageDialog(null, “Esta é uma mensagem !”); //saída obrigatória do sistema System.exit(0); } } Programação Orientada a Objetos Professora : Jane * Visão geral de componentes Swing É preciso criar interfaces mais elaboradas e mais específicas em relação à aplicação. Será que a classe JOptionPane resolve ? A maioria dos componentes swing são componentes Java puros, ou seja, são escritos, manipulados e exibidos em Java. Eles fazem parte do JFC (Java Foundation Classes), que representa bibliotecas do Java para desenvolvimento GUI para várias plataformas. Exemplos de componentes : botão, campo de texto ... Antes do swing ter sido introduzido na versão 1.2, os GUIs do Java eram construídas com componentes do Abstract Window Toolkit (AWT) do pacote java.awt. Quando um aplicativo Java com awt é executado em diferentes plataformas, os componentes são exibidos diferentemente em cada plataforma. Às vezes, a maneira como o usuário pode interagir com o componente awt particular difere entre as plataformas. Programação Orientada a Objetos Professora : Jane * Os componentes swing (botões, caixas de texto, etc...) permitem especificar uniformemente a aparência e o comportamento para o aplicativo em todas as plataformas ou utilizar a aparência e o comportamento personalizados de cada plataforma. Como os componentes swing são implementados em Java, são mais portáveis e flexíveis do que os componenentes Java GUI originais do pacotes java.awt. Os componentes Swing são conhecidos como componentes leves e os componentes AWT são conhecidos como componentes de peso, porque contam com o sistema de janela da plataforma local para determinar a funcionalidade, a aparência e o comportamento do aplicativo. Programação Orientada a Objetos Professora : Jane * Hierarquia de classes Object Component (pacote java.awt) Container (pacote java.awt) JComponent (pacote javax.swing) Classe Component : declara muitos dos atributos e comportamentos comuns aos componentes GUI em pacotes java.awt e javax.swing. Classe JComponent : é superclasse de todos os componentes leve Swing e declara seus atributos e comportamentos comuns. Programação Orientada a Objetos Professora : Jane * Um pouco mais de JOptionPane (subclasse de JComponent) Uma versão mais completa do comando de caixa de diálogo contém quatro argumentos, como segue: JOptionPane.showMessageDialog(null, “Texto da Mensagem”, “Titulo da janela”, TIPOICONE); Programação Orientada a Objetos Professora : Jane * Programação Orientada a Objetos Professora : Jane * Para entrada de dados utilizamos o método showInputDialog, com uma variável do tipo String aguardando o retorno. String numLido = JOptionPane.showInputDialog( "Informe:" ); Note : Os métodos showInputDialog e showMessageDialog são static. Programação Orientada a Objetos Professora : Jane * Exemplo com E/S (vide Deitel): import javax.swing.JOptionPane; public class Soma { public static void main( String args[] ) { String numero1, numero2; int n1, n2, resultado; numero1 = JOptionPane.showInputDialog ("Informe um inteiro:"); numero2 = JOptionPane.showInputDialog ("Informe outro inteiro"); // convertendo n1 = Integer.parseInt( numero1 ); //Converte para inteiro n2 = Integer.parseInt( numero2 ); // somando resultado = n1 + n2; JOptionPane.showMessageDialog(null, "A soma é "+ resultado, "Resultado:", JOptionPane.PLAIN_MESSAGE); } } Programação Orientada a Objetos Professora : Jane * Objetivo Nosso objetivo no curso é trabalhar com swing, mas vez por outra usaremos classes do pacote java.awt . Será que as classes de javax.swing são muito diferentes das classes de java.awt ? Programação Orientada a Objetos Professora : Jane * Formulários com AWT Usando o AWT é possível criarmos formulários para entrada de dados usando os componentes gráficos mais conhecidos nas interfaces gráficas: Classe TextField: public TextField(int colunas) – cria uma campo de texto com o numero de colunas especificado void setText(String texto) – seta o texto do campo String getText() – recupera o texto do campo boolean isEditable() – informa se o campo é editável void setEditable(boolean editavel) – determina se o campo será ou não editável Classe Button: public Button(String label) – cria um botão com o label especificado void setLabel(String label) – seta o label do botão String getLabel() – retorna o label do botão Classe Label: public Label(String texto) - cria um label com o texto especificado public Label(String texto, int alinhamento) – cria um label com o texto especificado no alinhamento especificado. O alinhamento pode ser Label.RIGHT, Label.LEFT ou Label.CENTER String getText() – retorna o texto do label void setText(String texto) – seta o texto do label Programação Orientada a Objetos Professora : Jane * Formulários com AWT Todos os componentes listados anteriormente herdam de uma mesma classe: java.awt.Component Em todos os componentes listados anteriormente podemos aplicar 4 métodos: void setEnabled(boolean habilitado) – determina se o componente está habilitado, ou seja, se pode receber as entradas do usuário. boolean isEnabled() – informa se o componente está habilitado. void setVisible(boolean visivel) – determina se o componente está visível. boolean isVisible() – informa se o componente está visível. Após a criação do componente (com o operador new) é preciso adicioná-lo (método add). Ou seja : Componente add(Component componente) adiciona o componente no final da lista de componentes, ou seja, os componentes aparecem na ordem em que foram adicionados. A questão do posicionamento dos componentes será visto mais tarde. Programação Orientada a Objetos Professora : Jane * Nosso objetivo no curso : Swing No pacote javax.swing há classes semelhantes às classes do pacote java.awt : JPanel JLabel JTextField JButton JComboBox JList entre outras. Programação Orientada a Objetos Professora : Jane * Exercícios Usando JOptionPane, crie uma aplicação em Java para ler a altura e o peso de uma pessoa e apresentar seu IMC. IMC = peso/(altura*altura) Adicione código ao programa anterior, identificando e apresentando a situação da pessoa de acordo com seu IMC : IMC inferior a 18.5 : abaixo do peso IMC de 18.5 até 24.99 : peso normal IMC superior ou igual a 25 : acima do peso Exemplo : Para formatar, especificando o número de casas decimais ... double soma = 190.897877; JOptionPane.showMessageDialog(null,"Resultado = " + String.format("%.2f",soma) ); Programação Orientada a Objetos Professora : Jane * A classe JFrame Apenas começando... A maioria das janelas criadas serão instâncias da classe JFrame ou de uma subclasse de JFrame. JFrame fornece os atributos e comportamentos básicos de uma janela : barra de título na parte superior da janela, botões para minimizar, maximizar e fechar janela. Dessa forma poderemos personalizar. Como é possível trabalhar ? Sem arrastar componentes do NetBeans, mas sim adicionando-os através de código (método add). Arrastando componentes da paleta do NetBeans (não é o objetivo do curso). Programação Orientada a Objetos Professora : Jane * Visualização geral A forma com que os componentes aparecem dispostos no painel é chamada layout. *