Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Edgar Gurgel JAVA Interface Gráfica - Swing Swing - Conceitos • O pacote Swing não é um substituto do AWT (Abstract Window Toolkit), o pacote gráfico utilizado nas primeiras versões de Java. Em vez disso, o Swing é visto como uma camada disposta sobre o AWT e que utiliza internamente os componentes da AWT. • Diferentemente da AWT, onde alguns componentes gráficos utilizavam a capacidade de renderização da interfaces gráficas em que o aplicativo estava sendo executado, os componentes do Swing são todos escritos em puro java. • Um componente do pacote Swing é reconhecido pela letra J antecedendo o nome do mesmo componente no pacote AWT. Swing - Conceitos Todas as classes do swing são extensões da classe AWT, que por sua vez, são extensões da classe java.lang.Object, a superclasse de todas as classes do Java. Existem três classes a serem utilizadas na criação de uma GUI: ü import java.awt.* à permite a utilização de diversas classes do pacote AWT, além de possuir uma série de constantes numéricas. ü import java.awt.event à usado para o processamento dos eventos que ocorrerão na janela, tais como: Click do Mouse, ENTER do campo texto, etc. ü import javax.swing.* à permite a utilização de diversas classes do pacote swing. Swing – Criação de Frames • Frame é um componente do pacote AWT responsável pela criação de janelas, parecidas com as encontradas em aplicativos do ambiente Windows. O componente frame gera uma janela com barra de título, bordas e pode ter outros componentes em seu interior. • Imagine o componente frame como uma folha de projeto em que são inseridos diversos objetos. Em conjunto com esses objetos, definidos no método construtor da classe, o componente frame gera uma visualização gráfica de um determinado aplicativo. • Esta classe estende diretamente a classe Frame do AWT. Swing – Compreendendo Eventos l As interfaces gráficas são elementos baseados em eventos; l De uma maneira geral, eventos são interação do usuário com a interface gráfica; l Mover o mouse é um evento; fechar uma janela é um outro evento; l Eventos ocorrem a todo instante nos aplicativos modernos. Swing – Compreendendo Eventos l Quando o usuário interage com um objeto da in te r face g rá f i ca , um even to é env iado automaticamente para o programa na expectativa de que ele seja identificado e convenientemente tratado para produzir algum tipo de resposta à ação realizada sobre o objeto. Swing – Estrutura Hierárquica AWT e Swing Ø Os retângulos sombreados representam os controles da AWT. JWindow Dialog Frame JLabel AbstractButton JPanel JRootPane JDialog JFrame JButton Window Jcomponent Container Component Como utilizar os componentes Swing? l É possível utilizar alguns componentes básicos do Swing diretamente; l Com o Swing não há mudanças fundamentais no modo como as aplicações são construídas; l Pode-se criar a janela principal da aplicação, usar frames, componentes e gerenciadores de layout e é possível estabelecer conexão com interfaces gráficas que são elementos baseados em eventos. Swing – Exemplo 1 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Exemplo1 extends JFrame { Exemplo1() { setTitle("Minha primeira Janela em Java"); setSize(400,200); setLocation(150,150); setResizable(false); getContentPane().setBackground(Color.gray); String x = getTitle(); } public static void main(String args[]) { JFrame Janela=new Exemplo1(); Janela.setVisible(true); } } Importação de Pacotes Estende JFrame construtor - mesmo nome da classe titulo da Janela dimensoes da janela (Largura e Comprimento) canto esquerdo e topo da tela a janela não pode ser redimensionada cor de fundo da janela declaração e inicialização do objeto Janela Mostra a Janela na tela Swing – Exemplo Interface Gráfica POO II 11 l Até agora utilizamos o método System.out.println para escrever informações na tela. Porém, esta prática não é 100% portável, pois há sistemas que não dispõem de um console de texto; l A linguagem Java oferece diversas formas de interação com o usuário, a grande maioria em janelas. Para evitar a criação de uma interface completa, pode-se utilizar as chamadas caixas de diálogo; l Se olharmos com atenção na documentação da API, observaremos que as classes estão agrupadas em pacotes (packages); l Os pacotes servem para reunir um conjunto de classes com função semelhante. Então, se quisermos utilizar uma classe específica, devemos informar ao compilador Java onde (em qual pacote) essa classe deve ser encontrada; Interface Gráfica POO II 12 l A Classe que implementa as caixas de diálogo, JOptionPane, se encontra no pacote javax.swing, que contém diversas outras classes para interface com o usuário. Para utilizar essa classe, utiliza-se o comando import; l import javax.swing.JOptionPane; l Algumas classes como String, System, Integer e outras são parte de um pacote especial, denominado java.lang. Esse pacote nunca precisa ser importado, pois são as classes primitivas que compõem a linguagem Java; l A classe JOptionPane oferece diversos métodos, para criar diversos tipos de caixas de diálogo. Por exemplo, se quisermos exibir uma caixa de mensagem pa ra i n fo rmar o usuá r i o , usamos o mé todo showMessageDialog(...); Interface Gráfica POO II 13 l As caixas de diálogo de entrada de texto (Input Text Dialog) servem para fazer uma requisição de algum dado ao usuário de forma bem simples e direta; l O que é digitado pelo usuário é retornado pelo método em forma de String; l Existem mais de 10 métodos sobrecarregados para invocar uma caixa de diálogo Input Text, mas como exemplo usaremos o método showInputDialog( ) ; // utilização de interface gráfica // pacotes de extensão de Java // importa a classe JOptionPane import javax.swing.JOptionPane; public class Interface1{ // metodo main executa a aplicao Java public static void main(String args[ ]) { JOptionPane.showMessageDialog(null,"Usando uma interface grafica!"); JOptionPane.showMessageDialog(null,"Usando uma interface grafica!","Aviso",JOptionPane.WARNING_MESSAGE); // termina o aplicativo System.exit(0); } // fim do metodo main } // fim da classe Interface1 Interface Gráfica POO II 14 Interface Gráfica POO II 15 l o método showMessageDialog(...) é um método estático (de classe) de JOptionPane! Por esse motivo, não é necessário instanciar objetos a partir de JOptionPane; l Observe também a chamada para o método System.exit(0), este método é geralmente utilizado para encerrar um programa que utilize interface gráfica; l O primeiro parâmetro é a dependência ou frame pai, ou seja, de qual janela esta confirmação está sendo gerada. Como nossos exemplos iniciais não possuem nenhuma dependência, então, sempre usaremos null neste argumento; l O segundo parâmetro é a mensagem a ser exibida ao usuário; l O terceiro parâmetro é o título que será exibido na janela (ao invés de “Mensagem"); l O quarto parâmetro controla o ícone apresentado à esquerda da janela; Interface Gráfica POO II 16 • JOptionPane.PLAIN_MESSAGE - nenhum ícone • JOptionPane.ERROR_MESSAGE– • JOptionPane.INFORMATION_MESSAGE - • JOptionPane.WARNING_MESSAGE - • JOptionPane.QUESTION_MESSAGE - // utilizacao de interface grafica // pacote de extensao Java // importa a classe JOptionPane import javax.swing.JOptionPane; public class Interface2{ // metodo main executa a aplicacao public static void main(String args[ ]) { String n1,n2; int num1,num2,soma; // converte o primeiro numero digitado pelo usuario como uma String n1 = JOptionPane.showInputDialog("Entre com o primeiro numero: "); n1 = JOptionPane.showInputDialog(null,"Entre com o primeiro numero: ","Entrada de Dados", JOptionPane.WARNING_MESSAGE); // converte o segundo numero digitado pelo usuario como uma String n2 = JOptionPane.showInputDialog("Entre com o segundo numero: "); Interface Gráfica POO II 17 // converte os numeros do tipo string para inteiro num1 = Integer.parseInt(n1); num2 = Integer.parseInt(n2); soma = num1+num2; JOptionPane.showMessageDialog(null,"A soma e "+soma,"Resultado",JOptionPane.PLAIN_MESSAGE); System.exit(0); } // fim do método main } // fim da classe Interface2 Interface Gráfica POO II 18 l O método showConfirmDialog sempre retorna uma constante que é a resposta clicada pelo usuário, conforme tabela abaixo: 19 Introdução à Programação Visual VALOR NOME DA CONSTANTE EQUIVALE 0 YES_OPTION Clicar no botão Yes 1 NO_OPTION Clicar no botão No 2 CANCEL_OPTION Clicar no botão Cancel Interface Gráfica POO II 20 import javax.swing.JOptionPane; public class Interface3 { public static void main(String args[ ]) { String nome; int resposta; nome = JOptionPane.showInputDialog("Qual é o seu nome?"); resposta = JOptionPane.showConfirmDialog(null, "O seu nome é " + nome + "?"); if (resposta == JOptionPane.YES_OPTION) // verifica se o usuario clicou no botao YES JOptionPane.showMessageDialog(null, "Seu nome e " + nome); else JOptionPane.showMessageDialog(null, "Seu nome nao e " + nome); } }
Compartilhar