JAVA
Interface Grafica - Swing
Professor Rafael Monteiro
POO usando JAVA
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.
POO usando JAVA
2
Todas as classes do swing são extenções da classe AWT, que
por sua vez, são extençõ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.
 imoport 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.
POO usando JAVA
3
Frame é um componente do pacote AWT responsável pela
criação de janeas, 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 metodo construtor da classe, o componente frame gera
uma visualização grafica de um determinado aplicativo.
Esta classe estende diretamente a classe Frame do AWT.
POO usando JAVA
4




As interfaces gráficas são elementos baseados em
eventos.
De uma maneira geral, eventos são interaçãao do usuário
com a interface gráfica.
Mover o mouse é um evento; fechar uma janela é um
outro evento.nn
Eventos ocorrem a todo instante nos aplicativos
modernos.
Continua...
POO usando JAVA
5

Quando o usuário interage con um objeto da interface
gráfica, um evento é enviado automaticamente para o
programa na expectativa de que ele seja identificado e
tratado e convenientemente tratado para produzir algum
tipo de resposta à ação realizada sobre o objeto.
POO usando JAVA
6
JWindow
Window
Component
Dialog
JDialog
Frame
JFrame
Container
JLabel
Jcomponent
AbstractButton
JButton
JPanel
JRootPane
 Os retângulos sombreados representam os controles da AWT.
POO usando JAVA
7
É possível utilizar alguns componentes básicos do
Swing diretamente.
 Com o Swing não há mudanças fundamentais no
modo como as aplicações são construídas.
 Pode-se criar a janela principal da aplicação, usar
frames, componentes e gerenciadores de layout e é
possível estabelecer conexão quase que da mesma
forma nterfaces gráficas são elementos baseados em

eventos.
POO usando JAVA
8
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Exemplo1 extends JFrame
{
Exemplo1()
{
setTitle("Minha primeira Janela em Java");
setSize(400,50);
setLocation(150,150);
setResizable(false);
getContentPane().setBackground(Color.gray);
String x = getTitle();
}
Importação de Pacotes
Extende de 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
JPanel pane = new Jpanel();
pane.setBackground(newColor(180,180,180));
public static void main(String args[])
{
add(pane);
JFrame Janela=new Exemplo1();
declaração e inicialização do objeto Janela
Janela.show(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Mostra a Janela na tela
Janela.setVisible(true); }
}
Continua...
POO usando JAVA
9
Continua...
POO usando JAVA
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Exemplo2 extends JFrame implements ActionListener
{
JButton b1,b2;
ImageIcon icone = new ImageIcon("C:/Livros/Java/busca.gif");  Defini-se uma imagem
public Exemplo2()
{
setTitle("Inserindo botoes na janela");
setSize(350,100);
setLocation(50,50);
getContentPane().setBackground(new Color(180,180,180));
Continua...
POO usando JAVA
11
b1 = new JButton("Busca",icone);
b1.setHorizontalTextPosition(AbstractButton.LEFT); //posicao do texto
b1.setVerticalTextPosition(AbstractButton.TOP); //posicao do texto
b1.setBackground(new Color(100,180,180)); //cor de fundo do botao
b1.setForeground(Color.black); //cor do titulo do botao
b1.setFont(new Font("ScriptS",Font.BOLD,20)); //define a fonte do botao
b1.setEnabled(true); //Esta condicao eh Defaut, podendo ser alterada para FALSE
b1.addActionListener(this); //registra o b1 para que um evento seja gerado por ele
b1.setToolTipText("Pressione aqui para realizar uma busca"); //exibe a mensagem qdo
o ponteiro do estiver sobre o botao.
b1.setMnemonic(KeyEvent.VK_B); //cria um atalho via teclado: ALT + B
b2 = new JButton("Cancelar");
b2.addActionListener(this);
b2.setMnemonic(KeyEvent.VK_C);
b2.setToolTipText("Pressione aqui para cancelar");
getContentPane().setLayout(new FlowLayout()); //gerenciador de layout
getContentPane().add(b1);
getContentPane().add(b2);
Continua...
}
POO usando JAVA
12
public void actionPerformed(ActionEvent e)
{ // metodo implementado pelo ActionListener
if (e.getSource()==b1) //se o objeto que gerou o evento for o botao b1
{
System.out.println("Botao 1 pressionado");
}
if (e.getSource()==b2)
{
System.out.println("Botao 2 pressionado");
}
}
Continua...
POO usando JAVA
13
public static void main(String args[])
{
JFrame Janela = new Exemplo2();
Janela.show();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
Continua...
POO usando JAVA
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Exemplo3 extends JFrame implements ActionListener
{
JLabel L1,L2,L3;
JButton B1, B2, B3, B4, B5;
JTextField T1,T2,T3;
public static void main(String args[])
{
JFrame Janela=new Exemplo3();
Janela.show();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
Continua...
POO usando JAVA
15
Exemplo3()
{
setTitle("Calculadora");
setSize(350,90);
setLocation(50,50);
getContentPane().setBackground(new Color(150,150,150));
getContentPane().setLayout(new GridLayout(3,4));
L1 = new JLabel("Num.1");
L1.setForeground(Color.black);
L1.setFont(new Font("",Font.BOLD,14));
L2 = new JLabel("Num.2");
L2.setForeground(Color.black);
L2.setFont(new Font("",Font.BOLD,14));
L3 = new JLabel("Total");
L3.setFont(new Font("",Font.BOLD,14));
Continua...
POO usando JAVA
16
B1 = new JButton ("+");
B1.addActionListener(this);
B2 = new JButton ("-");
B2.addActionListener(this);
B3 = new JButton ("x");
B3.addActionListener(this);
B4 = new JButton ("/");
B4.addActionListener(this);
B5 = new JButton ("Limpar"); B5.addActionListener(this);
B5.setBackground(Color.black);
B5.setForeground(Color.white);
T1 = new JTextField();
T2 = new JTextField();
T3 = new JTextField();
Continua...
POO usando JAVA
17
// T1.addTextListener(this);
T3.setEditable(false); //define que o textField como somente leitura
//adicionam todos os objetos na janela na ordem que aparecem
getContentPane().add(L1);
getContentPane().add(T1);
getContentPane().add(B1);
getContentPane().add(B2);
getContentPane().add(L2);
getContentPane().add(T2);
getContentPane().add(B3);
getContentPane().add(B4);
getContentPane().add(L3);
getContentPane().add(T3);
getContentPane().add(B5);
}
Continua...
POO usando JAVA
18
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==B5)
{
T1.setText(""); T2.setText(""); T3.setText("");
return;
}
float N1=0,N2=0,result=0;
try
{
N1 = Float.parseFloat(T1.getText());
N2 = Float.parseFloat(T2.getText());
}
catch (NumberFormatException erro)
{
T3.setText("Erro");
return; //encerara o método actionPerformed
}
Continua...
POO usando JAVA
19
if (e.getSource()==B1)
{ result = N1 + N2; }
if (e.getSource()==B2)
{ result = N1 - N2; }
if (e.getSource()==B3)
{ result = N1 * N2; }
if (e.getSource()==B4)
{ result = N1 / N2; }
T3.setText(""+result); //qdo um numero e concatenado com um texto
automaticamente ele se transforma em um texto
}
}
Continua...
POO usando JAVA
20
Continuação ...
Listas e Caixas de
Seleção; Caixas de
Opção; Painéis e Botões
de Rádio
POO usando JAVA
21
Download

aulaSwing1.