O desenvolvedor possui uma va- riedade grande de APIs para de- senvolver interfaces com o usuá- rio no Java. Duas se destacam: o AWT e o Swing.
O AWT – Abstract Window To- olkit- é o antigo conjunto de fer- ramentas para interfaces gráficas do Java. Serve para oferecer in- fraestrutura mínima de interface gráfica (nivela por baixo).
Os componentes do Abstract Win- dow Toolkit estão no pacote java. awt.*. Ele contém todas as classes para criação de interfaces, entre- tanto apresenta alguns problemas:
▪
a aparência dos componentes dependente de plataforma na qual a aplicação será executada;▪
é limitada em recursos por depender de suporte de cada plataforma para os componentes oferecidos;▪
bugs e incompatibilidades entre plataformas.A resposta a essas limitações foi o desenvolvimento do Swing. O Swing é um conjunto de compo- nentes gráficos, que dão suporte à construção de aplicações Java com interface gráfica e interativi- dade. Ele faz parte da Java Founda- tion Classes (JFC).
Os componentes de Swing fazem parte do pacote javax.swing.*. Os componentes têm como objetivo, prover o mesmo comportamento, independente do sistema opera-
▪
JTextField;▪
JTextArea;▪
JRadioButton;▪
ButtonGroup;▪
JCheckBox;▪
JComboBox;▪
JPanel;▪
JScrollPane.Confira algumas características do Swing:
▪
grande variedade de compo- nente;▪
Java 2D API;▪
Look-and-Feel;▪
Internationalization;▪
Accessibility API.SEÇÃO 2
Alô Senai!
Alô, SENAI! é um exemplo, bem básico, para criação de um pro- grama com interface gráfica. O objetivo é criar uma janela sim- ples, que possuirá um rótulo, um campo de edição e um botão. No campo de edição, o usuário pode- rá escrever um texto, nesse caso, o seu nome. Ao clicar sobre o bo- tão, a aplicação exibirá uma men- sagem, cumprimentando o usuá- rio, utilizando o texto informado. Os elementos que compõe uma
▪
n (janela, painel): local onde são adicionados os componentes ou outros containers;▪
componentes: botões, labels, listbox, menus etc.▪
gerenciador de layout: ob-jeto responsável pelo posiciona- mento dos componentes inseri- dos num determinado container. O componente Swing, que repre- senta telas no sistema operacio- nal, é o JFrame. As janelas criadas, pelos desenvolvedores, derivam dela. Pode-se criar aplicações Swing inteiras, usando apenas um editor de texto e um compilador Java, mas, para facilitar o trabalho, é melhor utilizar o NetBeans. Uma aplicação Swing usa, nor- malmente, pelo menos um JFra- me. Um objeto derivado JFrame implementa uma única janela. Ele possui elementos chamados deco- rações, que são:
▪
a borda,▪
o título;▪
os botões para maximizar, minimizar e fechar a janela. Além do JFrame, pode ser utiliza- do, como componente base para aplicações, o JDialog ou o JAp- plet. Estes possuem um content pane. O content pane é um container sobre o qual serão adicionados os componentes gráficos que irão compor a aplicação.O primeiro passo é criar um novo projeto no NetBeans. Nesse exemplo, será criado um projeto chamado AloSenaiSwing. Para isso, foi criado o pacote com.senai.alosenai e, nesse pacote, deve-se criar um novo formulá- rio JFrame, conforme as figuras 30 e 31.
Figura 30: Criando um JFrame
Figura 31: Nomeando um JFrame criado
O resultado dessa operação será a apresentação de um formulário em branco, onde é possível adicionar os demais componentes.
O NetBeans controlará todo o código destinado à criação das janelas, inclusive quando uma classe derivada de JFrame for salva.O NetBeans cria um arquivo auxiliar para tratar dos componentes presentes na tela, e demais informações, necessárias, no momento ao qual está se desen- volvendo um formulário na IDE. Esse arquivo possui a extensão .form.
Na figura 32, você pode ver o resultado dessa operação, e um pouco da forma como o Netbeans trata aplicações Swing.
Figura 32: Editor NetBeans
É preciso adicionar os componentes necessários ao JFrame, indicando o local que se deseja incluir o componente no formulário. O NetBe- ans apresentará réguas para auxiliar no processo de posicionamento dos componentes. Os componentes a serem adicionados são:
▪
rótulo (JLabel);▪
campo de texto (JTextField);▪
botão (JButton).O próximo passo é configurar os componentes, para isso, é preciso cli- car sobre o formulário. No canto inferior esquerdo, serão apresentadas as propriedades do formulário. Altere, se for preciso, as seguintes pro- priedades:
▪
defaultCloseOperation: esta propriedade define como a Virtual Machine deve tratar o formulário após ele ter sido fechado. O valor deve ser: EXIT_ON_CLOSE;▪
title: essa é a propriedade que trata do título da janela. Altere para:“Alo SENAI!”.
Os componentes, no swing, mantêm um mesmo padrão para nome das propriedades, por isso, praticamente, todos os componentes possuem propriedades como text e enable. Isto se deve ao fato da árvore de he- ranças dos componentes do Swing. Veja detalhes na figura seguinte.
Figura 33: Árvore de componentes Swing
Deve-se alterar a propriedade Text dos componentes a seguir.
▪
rótulo (JLabel): altere o texto para “Nome”▪
campo de texto (JTextField): altere o texto para “Senai”▪
botão (JButton): altere o Texto para “Clique Aqui!”Neste momento, a aplicação já pode ser executada, entretanto, o botão ainda não realiza nenhuma ação. O código das ações que um compo- nente realiza, em resposta a uma ação do usuário ou do sistema, chama- -se Evento. Os eventos, da mesma forma que as propriedades, seguem um mesmo padrão entre os diversos componentes. Para adicionar uma ação a um botão, há duas opções: por meio da paleta de propriedades, selecionando na listagem de eventos o enveto actionPerformed, ou dando um duplo clique sobre o componente, dessa forma, é adicionado, auto- maticamente, um evento do tipo actionPerformed. Ao se realizar essa ação, aparecerá no editor o método jButton1ActionPerformed. Deve-se adicionar o código para que fique similar às informações a seguir. O código exe- cutado desse projeto pode ser observado na figura 34.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(this.getRootPane(), “Alo “+jTextField1.getText()+”!”,”Mensagem de Alô!”, JOptionPane.INFORMATION_MESSAGE);
Figura 34: Execução do projeto
O JOptionPane permite exibir mensagens, que permitem a interação com o usuário. Existem diversos tipos de mensagens. Veja!
▪
MessageDialog: é utilizado apenas para emitir uma mensagem,possibilitando que ela tenha um tipo. No exemplo, o tipo de mensagem foi definido como information. Além desse, há Error, Warning, Ques- tion . etc.
▪
InputDialog: exibe uma mensagem com uma caixa de edição, per-mitindo que o usuário informe um valor. Exemplo:
String pessoa = JOptionPane.showInputDialog(“Quem é você?”);
▪
ConfirmDialog: apresenta uma mensagem, onde o usuário podeselecionar entre opções. Exemplo:
int opSelecionada = JOptionPane.showConfirmDialog(null, “Confirma exclusão?”);
Além dos componentes, que foram utilizados nesse exemplo, existem outros importantes. Junto com o JDK é enviado um demo do Swing, onde se pode observar todo o potencial da biblioteca, disponível em {diretório de instalação do JDK}\Demo\JFC\SwingSet2}.
Entre os diversos componentes disponíveis vale destacar mais alguns.