Escolar Documentos
Profissional Documentos
Cultura Documentos
Show in Put Dialog
Show in Put Dialog
net
Pg. 1 de 4
Input Dialogs
Caixas de Entrada de Dados
Como foi introduzido anteriormente, em Java, podemos usufruir de classes e objetos do pacote Swing, o qual facilita a criao de interface grfica sem a necessidade de ficar horas programando. Neste artigo, nos aprofundaremos no uso de JOptionPane, comeando a personalizar algumas caixas de dilogo mais simples. Caixas de dilogo de entrada de dados so importantes para obter informaes ou requisitar algo do usurio. No objeto JOptionPane, h o mtodo showInputDialog() que responsvel em criar uma caixa de dilogo requisitando uma entrada de dado. Este mtodo sobrecarregado de vrias maneiras. A forma mais simples de seus argumentos : 1. A mensagem que deve ser exibida para o usurio. Com apenas este argumento possvel criar uma caixa de dilogo com o ttulo Input, um cone de interrogao, uma caixa de texto, uma mensagem e dois botes. Igual a figura abaixo:
Porm, h como alterarmos a aparncia dessa caixa, costumizando-a completamente. Outra forma utilizar dois argumentos, sendo: 1. A mensagem que deve ser exibida ao usurio. 2. O valor inicial da caixa de texto. O valor inicial da caixa de texto a string que deve aparecer dentro do campo onde digitamos nossa entrada. Assim que aparece a caixa, seu campo est preenchido com um valor inicial j selecionado. Ex.: O cdigo JOptionPane.showInputDialog("Qual o seu nome?", "Digite seu nome aqui.") geraria a seguinte caixa:
Uma das formas mais completas desse mtodo inclui alterar, inclusive, o ttulo da caixa. Assim, usa-se 4 argumentos: 1. De qual frame a caixa de dilogo dependente, ou seja, qual a janela principal que chamou a caixa Input Dialog. Caso a caixa de dilogo no dependa de nenhum frame ou janela principal, basta utilizarmos o valor null para este argumento. 2. A mensagem que deve ser exibida ao usurio. 3. O ttulo da caixa de texto. 4. Que tipo de mensagem . O tipo de mensagem define qual o cone ser utilizado, podendo ser utilizados os nmeros inteiros representados pelas constantes: http://www.tiexpert.net/programacao/java/showinputdialog.php
www.tiexpert.net
PLAIN_MESSAGE (valor: -1): Mensagem limpa, sem nenhum cone. ERROR_MESSAGE (valor: 0): Mensagem de erro. INFORMATION_MESSAGE (valor: 1): Mensagem informativa. WARNING_MESSAGE (valor: 2): Mensagem de alerta.
Pg. 2 de 4
QUESTION_MESSAGE (valor: 3): Mensagem de requisio ou pergunta. Esta a opo padro do mtodo showInputDialog(). Ex.: O cdigo JOptionPane.showInputDialog(null, "Qual o seu Nome?", "Pergunta", JOptionPane.PLAIN_MESSAGE) geraria a seguinte caixa:
www.tiexpert.net
Pg. 3 de 4
5. O quinto argumento representado pelo objeto Icon, que um cone que podemos criar a partir de um jpg, gif, png, etc. O objeto Icon ser comentado com mais detalhes nos prximos artigos. 6. O segredo do combo box est neste argumento. Aqui vir um array (vetor) de objetos que sero nossos valores pr-definidos. 7. O ltimo argumento serve apenas para indicar qual elemento do array (vetor) deve vir selecionado no incio. Caso no desejarmos que um tem seja selecionado no incio basta utilizarmos null. O array (vetor) de objetos deve ser genrico, portanto, utilizamos a classe Object para criar este array. O mtodo showInputDialog com combo box se diferencia do showInputDialog com caixa de texto pelo seguinte fato: o que retornado dessa vez no ser uma string, mas um objeto. Isso faz sentido se percebermos que agora estamos escolhendo um item dentro de uma lista de objetos. Portanto, o que ser retornado ser um objeto dessa lista, no uma string como acontecia com o Input Dialog com caixa de texto. Ento, se quisermos utilizar o objeto genrico como algum outro tipo de dado, devemos antes fazer uma induo de tipo ou typecasting. Vejamos o exemplo abaixo: import javax.swing.JOptionPane; public class CaixaComComboBox { public static void main(String[] args) { Object[] opcoes = { "sim", "no" }; Object resposta; do { resposta = JOptionPane.showInputDialog(null, "Deseja finalizar o programa?", "Finalizao", JOptionPane.PLAIN_MESSAGE, null, opcoes, "no"); } while (resposta == null || resposta.equals("no")); } } No exemplo acima, criamos uma lista com dois objetos: "sim" e "no". E j definimos "no" como opo pr-selecionada. Removemos qualquer cone com as opes PLAIN_MESSAGE e cone null. Criamos um lao (loop) com while que sempre ir repetir a mesma caixa enquanto o boto Cancel ou a opo "no" forem selecionados. Abaixo est um exemplo mais funcional, divertido e simples de fazer e entender. Trata-se de um jogo de adivinhar onde um nmero escolhido e temos que adivinhar qual nmero foi sorteado. No exemplo, sero usados elementos j estudados no site como a classe Math e Integer. import javax.swing.JOptionPane; public class JogoDeAdivinhar { public static void main(String[] args) { // define um nmero qualquer entre 0 e 10 int rndNr = (int) Math.ceil(Math.random() * 10); // lista de opes para o combo box da caixa de dilogo Object[] opcoes = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; // string onde ser retornado o resultado String resposta; http://www.tiexpert.net/programacao/java/showinputdialog.php
www.tiexpert.net
Pg. 4 de 4
} }
while (true) { // loop para evitar que o jogo feche depois da primeira resposta resposta = (String) JOptionPane.showInputDialog(null, "Em que nmero estou pensando?", "Jogo de Advinhar", JOptionPane.QUESTION_MESSAGE, null, opcoes, null); if (resposta == null) { /* * se clicar no boto Cancel, mostrar uma mensagem de Game Over * e sair do loop para finalizar o programa */ JOptionPane.showMessageDialog(null, "Game Over!\nVoc desistiu do jogo!"); break; } if (Integer.valueOf(resposta) > rndNr) { /* * Interpreta string como inteiro e compara com o nmero sorteado * para ver se maior */ JOptionPane.showMessageDialog(null, "Errado!\nO nmero que eu pensei menor."); } else if (Integer.valueOf(resposta) < rndNr) { /* * Interpreta string como inteiro e compara com o nmero sorteado * para ver se maior */ JOptionPane.showMessageDialog(null, "Errado!\nO nmero que eu pensei maior."); } else { /* * se no for nem maior e nem menor, ento igual. * Finaliza o jogo saindo do loop */ JOptionPane.showMessageDialog(null, "Parabns\nVoc adivinhou!\n" + "Eu realmente pensei no nmero " + rndNr); break; } }
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
http://www.tiexpert.net/programacao/java/showinputdialog.php