Você está na página 1de 19

Interface Grfica

AWT
SWING
Renata Zanella
Programao II
14/05/2010
Criando seu primeiro aplicativo de
interface grfica em Java
Um aplicativo de interface grfica em Java
criado usando-se a classe JFrame. Objetos
desta classe servem como containeres para
outros componentes e so as janelas
principais dos aplicativos, com ttulo e botes
para redimensionar, minimizar, maximizar e
fechar.
Aplicao Java
Exemplo herdando a JFrame
import javax.swing.*;

public class Estudos extends JFrame{ // herda da classe JFrame
public Estudos() { // construtor
super("Minha primeira aplicao GUI"); // passa como parmetro para a
superclasse o ttulo da janela
setSize(350, 250); // seta o tamanho da janela
setVisible(true); // torna visivel a janela
}

public static void main(String args[]){
Estudos app = new Estudos(); // instncia a classe Estudos
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Permite fechar a janela
}
}
Gerenciadores de Layout
Uma GUI construda a partir de componentes
chamados contineres que contm outros
componentes. Os mais usados so o JFrame e o JPanel.
Caso nenhum gerenciador de layout seja especificado,
ser considerado que toda a extenso do continer
formada por uma nica clula, possibilitando assim
apenas a incluso de um objeto.
Os principais gerenciadores de layout so: FlowLayout,
GridLayout, BorderLayout e CardLayout.

BorderLayout
import javax.swing.*;
import java.awt.*;

public class BorderLayoutTest extends JFrame
{
public BorderLayoutTest()
{
JButton botao1 = new JButton("Boto 1");
JButton botao2 = new JButton("Boto 2");
JButton botao3 = new JButton("Boto 3");
JButton botao4 = new JButton("Boto 4");
JButton botao5 = new JButton("Boto 5");

// Como o padrao de um JFrame o
// BorderLayout, simplesmente adicionamos
// os componentes na tela
getContentPane().add(botao1, BorderLayout.NORTH);
getContentPane().add(botao2, BorderLayout.CENTER);
getContentPane().add(botao3, BorderLayout.WEST);
getContentPane().add(botao4, BorderLayout.SOUTH);
getContentPane().add(botao5, BorderLayout.EAST);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pack();
setVisible(true);
}

public static void main(String args[])
{
new BorderLayoutTest();
}
}
Adicionando componentes janela
do aplicativo
Embora j exista ferramentas de programao
que facilitem bastante a construo de
interfaces grficas, importante saber como
componentes visuais so adicionados janela
do aplicativo. Veja um exemplo:
Exemplo
import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("Minha primeira aplicao GUI");

// obtm o painel de contedo e adiciona
// um boto janela
JButton btn = new JButton("Clique Aqui");// cria uma instncia de um boto
getContentPane().add(btn, BorderLayout.SOUTH);//adiciona o boto no sul do layout borderlayout

setSize(350, 250);//tamanho da janela
setVisible(true);//torna visvel a janela
}

public static void main(String args[]){
Estudos app = new Estudos(); // instncia a classe
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //permite fechar o aplicativo
}
}
Exemplo importanto a classe JFrame
import javax.swing.JFrame; //importao da classe JFrame

public class PrimeiroSwing {
// criamos um JFrame chamado 'janela'
JFrame janela = new JFrame();

public static void main(String args[]) {
new PrimeiroSwing();
}

private PrimeiroSwing() {

// definimos o ttulo da janela
janela.setTitle("Primeira Aplicao Grfica");
// definimos a largura e a altura da janela
janela.setSize(350, 150);
// define a posio da janela na tela
janela.setLocation(50, 50);
// define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// mostramos a janela
janela.setVisible(true);
}
}
Centraliza a janela
import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("Uso da classe JFrame");

setSize(350, 250);
setVisible(true);

// centraliza a janela
setLocationRelativeTo(null);
}

public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Define um cone para o aplicativo
/*
Este exemplo mostra como definir um cone
para uma JFrame. Antes de testar certifique-se
de ter uma imagem chamada icon.gif no diretrio
de execuo do aplicativo.
*/

import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("A classe JFrame");

// Define o cone para a janela
ImageIcon icone = new ImageIcon("icon.gif");
setIconImage(icone.getImage());

setSize(350, 250);
setVisible(true);
}

public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Maximixar a Janela
/*
Este exemplo mostra como criar uma JFrame
que exibida inicialmente no modo maximizado.

Se quiser que a janela aparea maximizada somente
na vertical use MAXIMIZED_VERT. Se quiser que ela
seja maximizada na horizontal use MAXIMIZED_HORIZ.
*/

import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("A classe JFrame");

// Define que a janela ser mostrada inicialmente
// maximizada
this.setExtendedState(MAXIMIZED_BOTH);

setSize(350, 250);
setVisible(true);
}

public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Define uma Imagem de fundo
/*
Este exemplo mostra como exibir uma imagem de fundo em uma JFrame. Note que os componentes so exibidos por cima da imagem. Antes de testar
certifique-se de ter a imagem "fundo.jpg" no diretrio da aplicao.
*/
import java.awt.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("A classe JFrame");

// Define o painel que conter os
// componentes do formulrio
JPanel painel = new JPanel();
painel.setOpaque(false);
painel.setLayout(new FlowLayout(FlowLayout.LEFT));
JButton btn = new JButton("Clique Aqui");
painel.add(btn);

setGlassPane(painel);
getGlassPane().setVisible(true);

// Define a imagem de fundo
Container c = getContentPane();
c.setLayout(new BorderLayout());
ImageIcon img = new ImageIcon("C:/Users/Renata/Pictures/pato.JPG");
JLabel label = new JLabel(img);
c.add(label, BorderLayout.CENTER);

setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Imagem de fundo
Definindo uma cor de fundo

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Estudos extends JFrame{
public Estudos() {
super("A classe JFrame");

Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));

// Define a cor de fundo
c.setBackground(Color.CYAN);

setSize(350, 250);
setVisible(true);
}

public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Tratamento de Eventos
Nas aplicaes em que desejamos interpretar as aes do usurio (ao clicar
em um boto, por exemplo), necessitamos implementar uma ou mais
interfaces receptoras de eventos. Cada classe receptora de eventos trata
de um evento diferente. Alguns exemplos:
ActionListener Eventos de ao como o clique do mouse sobre um
boto, ao pressionar ENTER em um campo texto, etc.
FocusListener Eventos de foco, gerados quando um componente recebe
ou perde o foco.
MouseListener eventos gerados pelo mouse quando clicado, entra na
rea de um componente, etc.
WindowListener eventos de janelas, gerados quando uma janela
maximizada, minimizada, etc.
Neste mdulo vamos aprender a utilizar a interface ActionListener. Esta
classe exige a declarao do mtodo actionPerformed, que onde vamos
definir o tratamento do evento gerado. Atravs do mtodo
addActionListener registramos os componentes que sero observados.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class BorderLayoutTest extends JFrame implements
ActionListener
{
JButton botao1;
JButton botao2;
JButton botao3;
JButton botao4;
JButton botao5;

public BorderLayoutTest()
{
botao1 = new JButton("Boto 1");
botao2 = new JButton("Boto 2");
botao3 = new JButton("Boto 3");
botao4 = new JButton("Boto 4");
botao5 = new JButton("Boto 5");
// Como o padrao de um JFrame o
// BorderLayout, simplesmente adicionamos
// os componentes na tela
getContentPane().add(botao1, BorderLayout.NORTH);
getContentPane().add(botao2, BorderLayout.CENTER);
getContentPane().add(botao3, BorderLayout.WEST);
getContentPane().add(botao4, BorderLayout.SOUTH);
getContentPane().add(botao5, BorderLayout.EAST);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pack();
setVisible(true);
//adiciona o boto para ser ouvido pelo listener
botao1.addActionListener( this);
}
//mtodo responsvel pela ao do evento
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == botao1){
//se pressionado o botao2, mostramos uma
mensagem
JOptionPane.showMessageDialog(null, "Norte da
janela");

}
}
public static void main(String args[])
{
new BorderLayoutTest();
}
}
JOptionPane
Utilizamos a classe JOptionPane para a incluso de mensagens. Esta
classe especializada na gerao de caixas de dilogo, isto ,
pequenas janelas que fazem uma pergunta, avisam o usurio ou
fornecem uma mensagem qualquer. Existem quatro tipos padro de
caixas de dilogo, sendo eles:
MessageDialog caixa de dilogo que apresenta uma mensagem,
possibilitando acrescentar cones de alerta ao usurio.
ConfirmDialog caixa de dilogo que alm de emitir uma
mensagem, possibilita ao usurio responder a uma pergunta.
InputDialog caixa de dilogo que alm de emitir uma mensagem,
permite a entrada de um texto.
OptionDialog caixa de dilogo que abrange os trs tipos
anteriores.
Apostila pg 17
Pg 18