Você está na página 1de 0

Arrays e dilogos

1. Arrays
Assim como na maioria das linguagens (C, Pascal, etc), os arrays em Java so estruturas de dados que
armazenam dados do mesmo tipo. Estes dados podem ser tipos primitivos (int, char, etc) ou objetos.
A declarao de um array em Java realizada da seguinte maneira:
int valores[] = new int[20];
No exemplo acima, ser criado um array com 20 posies, numeradas de 0 a 19. Cada posio pode ser
acessada individualmente, utilizando o operador [ ].
possvel tambm inicializar automaticamente um array com valores determinados:
int valores[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
Este tipo de inicializao tambm funciona para Strings:
String nomes[] = { "Ana", "Carlos", "Felipe", "Pedro" };
Observe que uma vez inicializado, o tamanho de um array no pode ser alterado!
Arrays so inteligentes: sabem seu tamanho. Isso fundamental, pois essencial haver uma maneira de
descobrir o espao solicitado para o array:
int tam_array = nomes.length;
Lembre-se: arrays so objetos. Se forem passados como parmetros para algum mtodo, a passagem
sempre por referncia (igual a qualquer outro objeto).
Detalhe importante: se for declarado um array de objetos, cada elemento dever ser instanciado
separadamente. Por exemplo, para declarar um array para armazenar 20 instncias da classe Pessoa:
Pesssoa funcs[] = new Pessoa[20];
funcs[0] = new Pessoa("Eduardo", 19, 'M');
funcs[1] = new Pessoa("Debora", 23, 'F');
...
funcs[19]= new Pessoa("Z", 30, 'M');
Se esquecermos de fazer isso, cada objeto armazenar uma referncia nula: o valor null. De uma forma
geral, todo objeto (no apenas em arrays) no inicializado armazena null.
2. Dilogos: interagindo com o usurio
At agora utilizamos o mtodo System.out.println para escrever informaes na tela. A linguagem Java
oferece diversas formas de interao com o usurio, a grande maioria em janelas. Para evitar a criao de
uma interface completa, pode-se utilizar as chamadas caixas de dilogo.
As classes esto agrupadas em pacotes (packages). Os pacotes servem para reunir um conjunto de classes
com funo semelhante. Ento, se quisermos utilizar uma classe especfica, devemos informar ao compilador
Java onde (em qual pacote) essa classe deve ser encontrada.
A classe que implementa as caixas de dilogo, JOptionPane, se encontra no pacote javax.swing, que contm
diversas outras classes para interface com o usurio. Para utilizar essa classe, utiliza-se o comando import:
import javax.swing.JOptionPane;
Obs: algumas classes como String, System, Integer e outras so parte de um pacote especial, denominado
java.lang. Esse pacote nunca precisa ser importado, pois so as classes que compem a linguagem Java.
A classe JOptionPane oferece diversos mtodos, para criar diversos tipos de caixas de dilogo. Por ex, para
exibir uma caixa de mensagem para informar o usurio, usamos o mtodo showMessageDialog(...):
import javax.swing.JOptionPane;
public class TestaDialogo
{
public static void main(String args[])
{
JOptionPane.showMessageDialog(null,"Este um dilogo simples");
System.exit(0);
}
}
O primeiro parmetro por enquanto deve ser null. Repare que o mtodo showMessageDialog(...) um
mtodo esttico (de classe) de JOptionPane! Por esse motivo, no necessrio instanciar objetos a partir de
JOptionPane. Observe tambm a chamada para o mtodo System.exit(0): este mtodo geralmente
utilizado para encerrar um programa que utilize interface grfica.

H uma outra forma de chamada para o mtodo showMessageDialog, a qual permite melhorarmos o visual
da caixa de mensagem:
JOptionPane.showMessageDialog(null,"Esta uma mensagem","Ateno", JOptionPane.WARNING_MESSAGE);

O terceiro parmetro o ttulo que ser exibido na janela (ao invs de "Message")
O quarto parmetro controla o cone apresentado esquerda da janela:
JOptionPane.PLAIN_MESSAGE - nenhum cone
JOptionPane.ERROR_MESSAGE - cone de erro
JOptionPane.INFORMATION_MESSAGE - cone de informao
JOptionPane.WARNING_MESSAGE - cone de aviso
JOptionPane.QUESTION_MESSAGE - cone de interrogao
Existe um mtodo para exibir uma caixa de entrada: showInputDialog. Esse mtodo retorna sempre a String
que foi digitada pelo usurio. Exemplo:
import javax.swing.JOptionPane;

public class TestaDialogo
{
public static void main(String args[])
{
String nome;
nome = JOptionPane.showInputDialog("Digite o seu nome");
JOptionPane.showMessageDialog(null,"Seu nome "+nome);
System.exit(0);
}
}

Assim como no mtodo showMessageDialog, h uma variao mais completa:
nome = JOptionPane.showInputDialog(null,"Por favor, digite seu nome","Ateno",
JOptionPane.WARNING_MESSAGE);

Se voc estiver curioso, consulte a documentao da API Java. H MUITAS outras variaes, tanto para
entrada como para sada.
Voc deve estar se perguntando: mas eu vou fazer programas baseados somente em caixas de dilogo ?
Isso no meio chato para o usurio? Sim, com certeza! A interao baseada em dilogos til quando
queremos informar o usurio de uma situao urgente ou quando se deseja chamar a ateno, mas no deve
ser utilizada excessivamente.
Normalmente o que temos uma interface grfica o tempo todo na tela, na forma de uma ou mais janelas
com diversos componentes, como botes, listas, etc. Como ainda cedo para fazermos isso, est disponvel
uma classe para exibio de mensagens na tela, denominada JanelaBasica. Esta classe apresenta
simplesmente uma janela onde existe uma rea de texto, com o objetivo de substituir o console.
Para utiliz-la, primeiramente copie o arquivo JanelaBasica.java para o diretrio onde esto as classes do
seu projeto atual. Se voc quiser olhar este arquivo, fique vontade. Note que no sero dadas explicaes
sobre o contedo deste arquivo, pelo menos por enquanto. Coisas da vida, mas para o bem de vocs.
A utilizao extremamente simples: crie uma instncia de JanelaBasica, utilizando o seguinte construtor:
JanelaBasica tela = new JanelaBasica("Ttulo");
O primeiro parmetro o ttulo da janela que ser exibida. A classe oferece dois mtodos para a exibio de
mensagens: print(...) e println(...), cujas utilizaes so bvias...
Exemplo: criaremos um programa super-til para somar dois nmeros. A entrada de dados ser realizada
atravs de caixas de dilogo.
import javax.swing.JOptionPane;

public class Soma
{
public static void main(String args[])
{
String str_num1,str_num2;
int num1,num2;
JanelaBasica tela = new JanelaBasica("Soma");
str_num1 = JOptionPane.showInputDialog("Digite um nmero");
str_num2 = JOptionPane.showInputDialog("Digite outro nmero");
num1 = Integer.parseInt(str_num1);
num2 = Integer.parseInt(str_num2);
tela.println("A soma : "+(num1+num2));
}
}
O aluno(a) mais atento(a) ir notar o desaparecimento da chamada System.exit(0). H um bom motivo: como
estamos utilizando uma janela grfica no modal, isto , que permanece o tempo todo na tela, a nica forma
de encerrar o programa fechando-se a janela. Se houvesse a chamada para exit(0) no final do programa,
no seria possvel enxergar a resposta a tempo.