Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A interacção do usuário com uma aplicação pode ser feita de dois modos:
textual (através de um fluxo de entrada e saída de informações na forma de
texto simples) ou gráfico.
2
Criação da interface gráfica
A base fundamental da organização das interfaces gráficas é a janela. Um
programa pode conter uma única janela ou abrir diversas janelas ao mesmo
tempo, através das quais o utilizador possa realizar diferentes operações.
A classe JFrame do pacote javax.swing é a versão estendida da classe
java.awt e muito mais poderosa do que a classe Frame do pacote
java.awt.
Por default, a janela em Java tem 0 pixel de largura, 0 pixel de altura e não é
exibida.
A seguir estão apresentados dois exemplo de criação de uma janela vazia,
posicionada no canto esquerdo superior do ecrã com uso da classe JFrame da
biblioteca swing:
3
Algumas das características e comportamentos das janelas não necessitam de ser
programadas, pois já estão incluídas no código da classe Frame (botões minimizar,
maximizar, fechar, este último para funcionar tem que ser programado):
import javax.swing.*;
public class Janela1A extends JFrame
{ public Janela1A(String titulo)
{ setTitle(titulo);
setSize(300,200);
setLocationRelativeTo(null); //centraliza
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[])
{ Janela1A j = new Janela1A("Janela1A"); }
}
Para poder terminar a execução da aplicação com o clique no botão close (X) do canto
direito superior da janela, utiliza se o seguinte método:
void setDefaultCloseOperation(int operacao);
onde o parâmetro operacao é uma das constantes:
JFrame.HIDE_ON_CLOSE somente oculta a janela, pode se abri-la de novo
JFrame.DISPOSE_ON_CLOSE destroi a janela, mas não termina o programa
JFrame.EXIT_ON_CLOSE termina chamando System.exit()
JFrame.DO_NOTHING_ON_CLOSE sem resposta automática, seu programa é 4
Containers e Componentes
5
Adição de componentes à janela
Componentes de janela são objectos que possuem uma representação gráfica e que
podem interagir com o utilizador e que possuem uma aparência e um comportamento.
Cada componente deve ser capaz de reagir às acções do utilizador, cada uma chamada
por evento, ao qual é associado uma resposta, uma acção.
Componente Rótulo (JLabel)
Os rótulos fornecem instruções de texto ou informações. Os rótulos são definidos com a
classe Jlabel (uma subclasse de Jcomponent). O rótulo exibe uma única linha de
texto somente de leitura, uma imagem ou tanto texto quanto imagem. Os programas
raramente alteram um conteúdo do rótulo depois de criá-lo.
import java.awt.*;
import javax.swing.*;
public class LabelTest extends JFrame
{ private JLabel label1, label2, label3;
private Container cont;
// configura a GUI
public LabelTest(String titulo)
{ setTitle(titulo); setLocationRelativeTo(null);
cont = getContentPane(); //obtém painel de conteúdo
cont.setLayout(new FlowLayout()); //configura seu layout
// construtor JLabel com um argumento do tipo String
label1 = new JLabel("Label com texto");
label1.setToolTipText("Isto é 1-o label"); 6
cont.add(label1);
Icon bug = new ImageIcon("picture.gif" );
// construtor JLabel com argumentos do tipo String, Icon e alinhamento à esq.
// implementaçao de interface Icon
label2 = new JLabel("Label com texto e icone",bug,
SwingConstants.LEFT);
label2.setToolTipText("Isto é 2-o label"); //exibe a dica
cont.add(label2); //adiciona rótulo ao painel de conteúdo
// construtor JLabel sem argumentos
label3 = new JLabel();
label3.setText("Label com icone e texto em baixo");
label3.setIcon(bug);
label3.setHorizontalTextPosition(SwingConstants.CENTER);
label3.setVerticalTextPosition(SwingConstants.BOTTOM);
label3.setFont(new Font("Serif", Font.BOLD|Font.ITALIC,16));
label3.setForeground(Color.red);
label3.setToolTipText("Isto é 3-o label");
cont.add(label3);
setSize(275, 170);
setVisible(true);
}
Por defeito, o texto aparece à direita da imagem quando um rótulo contém texto e
imagem. Os alinhamentos horizontal e vertical de um rótulo podem ser configurados
com os métodos setHorizontalTextPosition e setVerticalTextPosition,
respectivamente.
A classe JLabel fornece muitos métodos para configurar um rótulo depois que ele foi
instanciado (setText, getText, setIcon, getIcon, etc.).
8
Componente botão (classe JButton)
O botão é um componente em que o utilizador clica para activar uma acção específica.
O programa Java pode utilizar vários tipos de botões, incluindo botões de comando,
caixas de marcação, botões em alternativa e botões de opção.
9
import javax.swing.*;
public class TestarBotoes1 extends JFrame
{ private JButton btnSimples, btnComIcone;
private Container cont;
public TestarBotoes1(String titulo)
{ setTitle(titulo); setLocationRelativeTo(null);
cont = getContentPane();
cont.setLayout(new FlowLayout());
// cria botoes
btnSimples = new JButton("Botao Simples");
cont.add(btnSimples);
Icon bug1 = new ImageIcon("bug1.gif");
Icon bug2 = new ImageIcon("bug2.gif");
btnComIcone = new JButton("Botao com Icone", bug1);
btnComIcone.setRolloverIcon(bug2);
cont.add(btnComIcone);
setSize(375,100);
setVisible(true);
}
import java.awt.*;
import javax.swing.*;
public class TextFieldTest extends JFrame
{ private JTextField campoTexto1, campoTexto2, campoTexto3;
private JPasswordField campoSenha;
private Container cont;
setSize(325,100);
setVisible(true);
}
12
Referência bibliográfica:
António José Mendes; Maria José Marcelino.
“Fundamentos de programação em Java 2”. FCA. 2002.
Elliot Koffman; Ursula Wolz.
“Problem Solving with Java”. 1999.
F. Mário Martins;
“Programação Orientada aos objectos em Java 2”, FCA, 2000,
John Lewis, William Loftus;
“Java Software Solutions: foundation of program design”, 2nd edition, Addision-Wesley
John R. Hubbard.
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill.
H. Deitel; P. Deitel.
“Java, como programar”. 4 edição. 2003. Bookman.
Rui Rossi dos Santos.
“Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004
13