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

Propaganda
Introdução à Programação
Gráfica em Java
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DEPARTAMENTO ACADÊMICO DE ELETRÔNICA
PROF. VITOR YANO
Pacotes Java
 Dois grandes pacotes Java trazem outros pacotes
internos e classes prontas com funcionalidades
diversas:


pacote java – classes padrões da linguagem para o
funcionamento geral do algoritmo;
pacote javax – pacotes de extensão que fornecem classes e
objetos que implementam maiores funcionalidades a um
programa Java.
Pacotes AWT e Swing
 O AWT (Abstract Windowing Toolkit), pertencente
ao pacote java, é o primeiro pacote a fornecer classes
específicas para programação gráfica de interface
com o usuário.
 O Swing é um pacote baseado no AWT,
implementado a partir da versão 1.2 da linguagem
Java que apresenta diversas vantagens que serão
mostradas posteriormente. Pertence ao pacote
javax.
AWT
AWT
AWT
Usando o pacote AWT
 Para utilizar as classes de um pacote, é preciso
importá-las.
 Exemplo:


import java.awt.Frame;
import java.awt.Button;
 Para importar todas as classes de um pacote, pode-se
usar um asterisco:

import java.awt.*;
Criando uma janela com AWT
 Uma janela é criada através da classe Frame.
 Esta classe possui os diversos métodos necessários
para sua personalização e adição de componentes.
Exemplo: criando uma janela com botão
import java.awt.*;
public class ProgramaAWT {
public static void main(String[] args) {
Frame janela = new Frame("Janela AWT");
Button btnOk = new Button("OK");
janela.add(btnOk);
janela.setSize(300, 200);
janela.setResizable(false);
janela.setVisible(true);
}
}
Criando uma janela com AWT
 O problema desta forma de construção de janelas é
que dificulta o controle de eventos.
 No exemplo mostrado, a janela não pode ser fechada
e o botão não possui função nenhuma.
Criando uma janela com AWT
 O modo mais usado para a criação de uma janela
gráfica é a criação de uma subclasse da classe Frame,
o que permite implementar novos métodos.
Exemplo: criando uma janela com botão 2
import java.awt.*;
public class ProgramaAWT extends Frame {
private Button btnOk = new Button("OK");
public static void main(String[] args) {
ProgramaAWT janelaPrincipal = new ProgramaAWT();
}
// construtor da classe ProgramaAWT
ProgramaAWT() {
super("Janela AWT");
add(btnOk);
setSize(300,200);
setResizable(false);
setVisible(true); }
}
Controle de eventos
 Para fechar a janela, utiliza-se a interface
WindowListener, pertencente ao pacote
java.awt.event.
 Uma interface é uma classe que possui apenas
declarações de métodos, ou seja, não possui métodos
implementados e nenhum atributo;
 Uma interface não pode ser instanciada
diretamente, ela serve para definir um padrão de
métodos a serem implementados em uma classe.
Interface WindowListener
package java.awt.event;
import java.util.EventListener;
public interface WindowListener extends EventListener {
public void windowOpened(WindowEvent we);
public void windowClosing(WindowEvent we);
public void windowClosed(WindowEvent we);
public void windowIconified(WindowEvent we);
public void windowDeiconified(WindowEvent we);
public void windowActivated(WindowEvent we);
public void windowDeactivated(WindowEvent we);
}
Controle de eventos
 Para fechar a janela, importar o pacote:
import java.awt.event.*;
 Implementar a interface WindowListener:
public class ProgramaAWT extends Frame implements WindowListener {
 Adicionar o controle de eventos à janela (no método
construtor):
addWindowListener(this);
Controle de eventos
 Implementar os métodos:
//executado após a janela ser aberta
public void windowOpened(WindowEvent we) { }
//executado quando o usuário requisita o fechamento da janela
public void windowClosing(WindowEvent we) {
System.exit(0);
}
//executado após o fechamento da janela
public void windowClosed(WindowEvent we) { }
//executado quando a janela é minimizada
public void windowIconified(WindowEvent we) { }
//executado quando a janela retorna de minimizada para normal
public void windowDeiconified(WindowEvent we) { }
//executado quando a janela recebe o foco no sistema operacional
public void windowActivated(WindowEvent we) { }
//executado quando a janela perde o foco no sistema operacional
public void windowDeactivated(WindowEvent we) { }
Controle de eventos
 Para atribuir uma ação ao clicar no botão, pode-se
implementar a função handleEvent da classe Frame
ou implementar a interface ActionListener,
semelhante à WindowListener.
Container
 Nas versões mais recentes do Java, o botão
adicionado à janela no exemplo preenche todo o
espaço disponível – em versões anteriores não era
possível adicionar componentes diretamente a um
Frame;
 Para poder adicionar mais componentes, deve-se
utilizar um Container;
 O Container mais simples é o painel (classe Panel).
Exemplo: adicionando dois botões
import java.awt.*;
public class ProgramaAWT extends Frame {
private Panel pan1 = new Panel();
private Button btnOk = new Button("OK");
private Button btnCancel = new Button(“Cancelar");
public static void main(String[] args) {
ProgramaAWT janelaPrincipal = new ProgramaAWT();
}
// construtor da classe ProgramaAWT
ProgramaAWT() {
super("Janela AWT");
pan1.add(btnOk);
pan1.add(btnCancel);
add(pan1);
setSize(300,200);
setResizable(false);
setVisible(true);
}
}
AWT
 Existem diversas outras propriedades dos
componentes AWT, eventos, caixas de diálogo,
menus, layout, etc.
 Todas as classes e métodos do pacote estão
documentados no site da Oracle:
http://download.oracle.com/javase/7/docs/api/java
/awt/package-summary.html
AWT x Swing
 A classe AWT faz chamadas diretamente para o
sistema operacional para exibir os componentes da
interface gráfica, isto é, usa funções nativas do
mesmo.
 Isso torna seu código mais leve e mais rápido, além
de manter a interface com a mesma aparência do
sistema operacional onde está sendo executada;
 Porém, isso torna o aplicativo dependente da
plataforma, e o conjunto de componentes oferecido
se torna limitado ao existente em qualquer sistema
operacional
AWT x Swing
 A partir da versão 1.2 da linguagem Java, o pacote de
classes Swing passou a ser incorporado.
 Este pacote implementa todos os componentes de
interface, tornando-o independente do sistema
operacional ou ambiente de janelas.
 Além disso, permite a criação de um conjunto
ilimitado de componentes de interface;
 A desvantagem do Swing em relação ao AWT é o
desempenho, pois neste caso todo o controle da
interface é de responsabilidade da JVM e não do
sistema operacional
Swing
 As classe do pacote Swing são 100% compatíveis com as
do AWT, ou seja, todos os métodos das classes AWT são
implementadas, além de outras;
 Basicamente, a diferença na nomenclatura das classes
está na inclusão de uma letra “J” no início do nome:
JFrame, JPanel, JButton, JLabel, JTextField,
JCheckBox, porém há exceções, como JRadioButton e
JComboBox.
 Além dos componentes já existentes no AWT, o Swing
implementa outros mais avançados, como JTabbedPane,
JToolBar, JInternalFrame, JColorChooser,
JFormattedTextField, JSpeener, JPasswordField,
JMenuBar, entre outros.
Download