Show Input Dialog

download Show Input Dialog

of 4

Transcript of Show Input Dialog

www.tiexpert.net

Pg. 1 de 4

Input DialogsCaixas de Entrada de DadosComo 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:

Obter valor de showInputDialogO mtodo showInputDialog pode retornar dois valores: ou uma string ou null. Se o boto OK for clicado a string contida na caixa de texto ser retornada, se o boto Cancel for clicado o valor null ser retornado. Sabendo disso, podemos usar uma varivel string para obter o valor e tratarmos da forma que quisermos. Vejamos o exemplo abaixo: import javax.swing.JOptionPane; public class CaixasDeInput { public static void main(String[] args) { String nome = null; while (nome == null || nome.equals("")) { nome = JOptionPane.showInputDialog("Qual o seu nome?"); if (nome == null || nome.equals("")) { JOptionPane.showMessageDialog(null, "Voc no respondeu a pergunta."); } } JOptionPane.showMessageDialog(null, "Seu nome " + nome); } }

Input Dialog com lista de opesOutra forma de caixa de dilogo de entrada de dados a Input Dialog com lista de opes. o mesmo mtodo showInputDialog, mas com mais argumentos, sendo um deles uma lista de objetos. Esta lista de objetos far com que a caixa de dilogo venha com um combo box ao invs de um campo de texto. Para criar um Input Dialog com um combo box devemos usar os seguintes argumentos na respectiva ordem: 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 da mesma forma como foi mostrada anteriormente. http://www.tiexpert.net/programacao/java/showinputdialog.php

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