INTERFACE GRÁFICA EM JAVA
PROGRAMAÇÃ
Interface gráfica em Java
Interface gráfica com AWT
Componentes
Gestores de Layout
Interface gráfica com Swing
Componentes básicos de uma interface gráfica Botões
Caixas de seleção Caixas de texto Listas
Paineis
Gestores de Layout
Tratamento de eventos
Eventos em botões Eventos de teclado Eventos de mouse
PROGRAM
AÇÃO
As aplicações gráficas criam uma GUI
(Graphical User Interface).
Definição de componentes e disposição na
tela, interação com o utilizador.
O Java possui duas bibliotecas gráficas: AWT
(Abstract Window Toolkit) e Swing. Todas as classes do pacote Swing são extensões do pacote AWT, javax.swing.
3
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
GUI: Graphical User Interface ou Interface
Gráfica do Utilizador, são os componentes visuais que permitem a interação com o programa por meio de periféricos de
entrada.
Bibliotecas Gráficas: Fornecem um conjunto
de objetos, métodos e classes auxiliares para criação de interfaces gráficas.
PROGRAM
AÇÃO
As bibliotecas gráficas podem ser:
AWT (Abstract Window Toolkit): foi a primeira
biblioteca para interfaces gráficas em Java
Standard Widget Toolkit (SWT): desenvolvido
pela IBM e hoje é mantido pela Eclipse
Foundation, utiliza outras bibliotecas gráficas nativas do sistema operativo
Swing: desenvolvida pela Sun e independente da
plataforma, ou seja, é capaz de renderizar por conta própria todos os componentes
5
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
O Swing consiste em um conjunto de
componentes gráficos (extensões dos
componentes AWT e novos componentes como representação de árvores e painéis
tabulados), que agregam o conceito de look and feel (L&F), ou seja, a capacidade de um mesmo componente assumir aparências
diferentes sem a necessidade de mudanças no seu código.
PROGRAM
AÇÃO
uma aplicação Java que se adapte à
aparência gráfica do sistema operacional em que for executado – assumindo um aspecto semelhante as demais janelas Windows, Linux, Solaris, Macintosh, etc
codificar apenas a funcionalidade do
componente e a sua relação com o modelo de dados ao qual está associado, deixando a sua aparência a cargo do gestor de interface do utilizador (UI Manager)
7
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
Um componente é uma unidade
independente que inclusive pode ser utilizado por outros componentes. Os
principais containers em relação à API Java: javax.swing.JFrame
javax.swing.Jpanel
javax.swing.JApplet
PROGRAM
AÇÃO
Um componente é uma unidade
independente que inclusive pode ser
utilizado por outros componentes. Os mais comuns são:
JLabel: Objeto não editável que exibe um texto
ou imagem;
JTextField: editavel ou não, este objecto recebe
e apresenta dados introduzidos pelo utilizador;
JComboBox: Cria uma lista de opções que
permite selecção individual;
JList: Cria uma lista de opções que permite
selecção múltipla.
PROGRAM
AÇÃO
Um componente é uma unidade
independente que inclusive pode ser
utilizado por outros componentes. Os mais comuns são:
JButton: permite a acção de determinado
evento;
JCheckBox: Caixa de seleção que pode ser
marcada ou desmarcada.
JFrame: permite o armazenamento de
componentes.
JPanel: Área onde outros componentes podem
ser inseridos e que facilita o posicionamento no Jframe
11
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
Container
Serve para adicionar os componentes e
posicioná-los através do método setLayout
FlowLayout
Os componentes são adicionados no Container da
esquerda para a direita até atingir a borda do Container, onde continuam na próxima linha. Podem ainda ser alinhados a esquerda,
centralizados e à direita
PROGRAM
AÇÃO
BorderLayout
É organizado em regiões norte, sul, leste, oeste e
centro, ao serem adicionados nas regiões norte ou sul os componentes expandem-se
horizontalmente e nas regiões leste e oeste expandem-se verticalmente. Caso não seja especificada a região os elementos serão colocados na região central por padrão.
13
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
GridLayout
Os elementos são posicionados como se
estivessem em uma tabela, ocupando linhas e colunas. Cada célula aceita somente um
componente.
PROGRAM
AÇÃO
Look And Feel (L&F)
chamar o método UIManager.setLookAndFeel()
passando o nome como parâmetro.
Algumas opções:
javax.swing.plaf.metal.MetalLookAndFeel;
com.sun.java.swing.plaf.motif.MotifLookAndFeel;
javax.swing.plaf.nimbus.NimbusLookAndFeel;
com.sun.java.swing.plaf.windows.WindowsClassicLook
AndFeel;
15
Prof. Nobre - Email: macaba.pedro@gmaill.com
PROGRAM
AÇÃO
Eventos
Tratamento de eventos com a
interface ActionListener e o método
chamado actionPerformed, acionado cada vez que um evento ocorre.
O método actionPerformed recebe um objeto do
tipo ActionEvent como argumento, este objeto possui o método getSource() que nos diz qual componente acionou o evento.
PROGRAM
AÇÃO
Prof. Nobre - Email: macaba.pedro@gmaill.com 17
package avoPatterno;
import javax.swing.JFrame; // importação da classe JFrame public class novaAldeia {
JFrame aldeia = new JFrame(); // Criação de um Jframe chamado aldeia public novaAldeia() {
//Definição do titulo da janela aldeia.setTitle("ALDEIA");
//largura e alturra
aldeia.setSize(400, 200); // posição da janela
aldeia.setLocation(100, 100); //mostra a janela
aldeia.setVisible(true); }
package avoPatterno;
import javax.swing.JFrame; import javax.swing.JButton; public class novaAldeia {
JFrame aldeia = new JFrame();
//criar e instanciar um Jbutton chamado botao com texto “Aldeia”
JButton botao = new JButton("ALDEIA"); public novaAldeia() {
//Definimos o titulo daa janela aldeia.setTitle("ALDEIA");
//largura e alturra
aldeia.setSize(400, 200); // posição da janela
aldeia.setLocation(100, 100); // ADICIONAR O BOTAO A JANELA aldeia.add(botao);
//mostra a janela
Prof. Nobre - Email: macaba.pedro@gmaill.com 19
package avoPatterno;
import java.awt.FlowLayout;
import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel;
Os componentes são dispostos da esquerda
para a direita na ordem em que são
adicionados. Quando não existe mais espaço em uma linha, é criada uma outra linha, de acordo com o tamanho do painel.
A sintaxe do construtor do FlowLayout é a seguinte: FlowLayout(alinhamento, espaçamento-horizontal,
Prof. Nobre - Email: macaba.pedro@gmaill.com 21
public class novaAldeia {
JFrame aldeia = new JFrame();
JPanel painel = new JPanel();
JLabel rotulo = new JLabel("Seu nome: ");
JTextField texto = new JTextField(5);
//crriar e instanciar um botao
public novaAldeia() {
//Definimos o titulo daa janela
aldeia.setTitle("ALDEIA");
//largura e alturra
aldeia.setSize(400, 200);
// posição da janela
aldeia.setLocation(100, 100);
aldeia.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); painel.setLayout(new
FlowLayout(FlowLayout.CENTER,30,10)); painel.add(rotulo);
painel.add(texto); painel.add(botao); aldeia.add(painel);
//mostra a janela
aldeia.setVisible(true); }
Divide um contentor em um conjunto de
células espalhadas numa grade rectangular, de maneira que todas elas possuam a mesma dimensão.
Pode-se dividir um contentor em linhas e
colunas de acordo com sua necessidade. Os componentes são dispostos na ordem em que aparecem, sendo inseridos na grade da
esquerda para a direita e de cima para baixo.
Qualquer modificação no tamanho do
contentor será automaticamente alterado o tamanho dos componentes adicionados a ele, ou seja, os componentes são
redimensionados em função da nova dimensão do contentor.
linhas --> número de linhas que terá o
contentor
colunas --> número de colunas que terá o
contentor
espaçamento-horizontal --> distância
horizontal entre os componentes
espaçamento-vertical --> distância vertical
entre os componentes
import java.awt.GridLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
Prof. Nobre - Email: macaba.pedro@gmaill.com 27
public class Comuna {
//criamos um JFrame chamado 'janela'
JFrame janela = new JFrame();
//criamos um JPanel chamado painel
JPanel painel = new JPanel();
//criamos um JLabel chamado rotulo1 e com o texto "Escolha uma fruta: "
JLabel rotulo1 = new JLabel("Escolha uma fruta: ");
//criamos um JLabel chamado rotulo2 e com o texto "Escolha uma bebida: "
JLabel rotulo2 = new JLabel("Escolha uma bebida: ");
/* criamos um ListModel que é o objeto que contém as opções da lista *
* não se preocupem com isso agora, pois veremos com mais detalhes */
DefaultListModel listModel = new DefaultListModel();
//criamos um JList chamado lista e definimos onde estão os objetos da lista
JList lista = new JList(listModel);
//criamos um JComboBox chamado combo
JComboBox combo = new JComboBox();
//criamos um JButton chamado 'botao' e com o texto "OK"
INTERFACE GRÁFICA