6. Interacção com o utilizador

Neste capítulo vamos ver algumas potencialidades que o Java oferece no que diz respeito ás formas de interacção com o utilizador. Todas as classes utilizadas implementam interfaces que estamos há muito habituados a ver em ambientes de janelas. Mais uma vez temos que importar as classes AWT.


6.1 Computador ® Utilizador

Temos aqui um método e uma série de classes capazes de disponibilizar informação ao utilizador de uma forma simples e clara das quais vamos ver algumas. O método showStatus trabalha com a área de estado enquanto que as classes trabalham com a consola.

Showstatus - O método showStatus coloca na área de estado do browser (a linha horizontal inferior do browser) a mensagem que pretende. Por vezes torna-se inconveniente porque impede-nos de ver os endereços URL escritos nessa área, pelo que é aconselhável um uso mínimo.

ShowStatus("Mensagem");

Para apagar a mensagem é necessário fazê-lo explicitamente, através de:

ShowStatus("");

Button - O Button é uma classe que é usada para criar botões que invocam acções quando o utilizador pressiona e larga o botão criado pela classe. É colocado no ecrã de acordo com o seguinte código e tem a aparência ilustrada.

Button yes = new Button("Yes");
add(yes):
yes.reshape(10, 10, 100, 40);

em que os valores de reshape são o ponto superior esquerdo do botão e o tamanho do botão.

Checkbox - A classe Checkbox mostra um pouco de texto com um espaço em branco do seu lado esquerdo que ficará assinalado se for pressionado. Está normalmente associado a escolha múltipla não exclusiva. O código necessário é o seguinte:

Checkbox sg = new Checkbox("Silicon Graphics", null, true);
add(sg);
sg.reshape(10, 10, 130, 20);

O null e o true aparecem apenas no primeiro botão de um conjunto e são utilizados para implementações mais avançadas.

CheckboxGroup - Esta classe é idêntica á anterior com as diferença de que a escolha aqui é exclusiva, só se pode optar por um botão do grupo, sendo este aspecto gráfico apelidado de botões de rádio. Para ilustrar dois botões introduzimos o seguinte código.

CheckboxGroup g = new CheckboxGroup();
Checkbox sg = new Checkbox("Silicon Graphics", g , true);
Checkbox sun = new Checkbox("Sun", g , false);
add(sg);
add(sun);
sg.reshape(10, 10, 130, 20);
sun.reshape(10, 30, 130, 20);

Aqui os parâmetros do Checkbox já são utilizados, o segundo indica a que CheckboxGroup esse Checkbox pertence e o terceiro indica qual é opção por defeito, a opção que no início está seleccionada.

Choice - Esta classe é usada para fazer selecção exclusiva abrindo uma janela quando pressionada onde mostra as várias opções.

Choice os = new Choice();
os.addItem("Silicon Graphics");
os.addItem("Sun");
add(os);
os.reshape(10, 10, 130, 20);

O resultado é o mostrado a seguir.

TextArea - Com esta classe podemos introduzir texto de uma forma muito simples num applet, criando este automaticamente as barras de navegação necessárias.

String val = "The Java HandBook\n" + "Core Java\n" +
" teach yourself Internet Game Programming with Java in 21 days";
TextArea text = new TextArea(val, 50, 3);
add(text);
text.reshape(10, 10, 300, 70);

O segundo e o terceiro parâmetro de TextArea indicam o número de colunas e linhas que queremos que apareçam no ecrã, quando estes não forem limitados pelo reshape ou pelo tamanho do applet. Existem depois vários métodos para alterar o texto que está a ser mostrado.

Existem mais classes, que permitem criar listas de opções, barras de navegação para associar a objectos (não necessariamente a texto), espaços para o utilizador introduzir pequenas quantidades de texto e passwords, criação de novas janelas, ..., mas penso que ficaram aqui muito brevemente descritas as mais utilizadas.


6.2 Utilizador ® Computador

Na secção anterior vimos formas de disponibilizar opções e informação ao utilizador, agora vamos ver formas de o utilizador interactuar com o computador.

O método que é aqui chamado por defeito é o handleEvent que pertence á classe Component. Este método é chamado com uma instância da classe Event, que descreve todos os tipos de eventos possíveis. Os eventos mais comuns, rato e teclado, são realizados por outros métodos da classe Component.

Os eventos do rato são mouseEnter, mouseExit, mouseMove, mouseDown, mouseDrag, mouseUp, que associados ás coordenadas de onde aconteceu o evento indicam quando o rato entra numa componente, quando o rato deixou uma componente, cada vez que o rato se move sob uma componente, quando o rato é pressionado pela primeira vez, quando o rato se move com o botão pressionado e quando o botão do rato é largado, respectivamente.

Do mesmo modo cada vez que uma tecla é pressionada ou largada é indicado através dos eventos keyUp e keyDown. Existem também eventos para teclas como o Shift, Control, Page Up, Home, ... , que são o shiftDown, controlDown, PGUP, HOME, ... .

Finalmente, para lidar com eventos como mexer numa barra de navegação, botões e Menus existe o método action que trata estes casos.

Apesar de estes métodos não serem tão lineares como a introdução de botões e texto, também é fácil receber e tratar os dados introduzidos.