Programação
› Algoritmo › C/C++ › Java
Web
› HTML/XHTML › JavaScript › PHP
Sistema Operacional
› Comandos de DOS › Windows › Linux › Mac/BSD
Office
› Word / Writer › Excel / Calc
Áreas do Site
› Download › Fórum › Blog
|
Input DialogsCaixas de Entrada de DadosComo foi introduzido anteriormente, em Java, podemos usufruir de classes e objetos do pacote Swing, o qual facilita a criação de interface gráfica sem a necessidade de ficar horas programando. Neste artigo, nos aprofundaremos no uso de JOptionPane, começando a personalizar algumas caixas de diálogo mais simples. Caixas de diálogo de entrada de dados são importantes para obter informações ou requisitar algo do usuário. No objeto JOptionPane, há o método
Com apenas este argumento é possível criar uma caixa de diálogo com o título Input, um ícone de interrogação, uma caixa de texto, uma mensagem e dois botões. Igual a figura abaixo:
Porém, há como alterarmos a aparência dessa caixa, costumizando-a completamente. Outra forma é utilizar dois argumentos, sendo:
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 código
Uma das formas mais completas desse método inclui alterar, inclusive, o título da caixa. Assim, usa-se 4 argumentos:
Ex.: O código
Obter valor de showInputDialogO método Se o botão OK for clicado a string contida na caixa de texto será retornada, se o botão Cancel for clicado o valor null será retornado. Sabendo disso, podemos usar uma variável 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ê não respondeu a pergunta.");
}
}
JOptionPane.showMessageDialog(null, "Seu nome é " + nome);
}
}
Input Dialog com lista de opçõesOutra forma de caixa de diálogo de entrada de dados é a Input Dialog com lista de opções. É o mesmo método showInputDialog, mas com mais argumentos, sendo um deles uma lista de objetos. Esta lista de objetos fará com que a caixa de diálogo venha com um combo box ao invés de um campo de texto. Para criar um Input Dialog com um combo box devemos usar os seguintes argumentos na respectiva ordem:
O array (vetor) de objetos deve ser genérico, portanto, utilizamos a classe Object para criar este array. O método Então, se quisermos utilizar o objeto genérico como algum outro tipo de dado, devemos antes fazer uma indução de tipo ou typecasting. Vejamos o exemplo abaixo: import javax.swing.JOptionPane;
public class CaixaComComboBox {
public static void main(String[] args) {
Object[] opcoes = { "sim", "não" };
Object resposta;
do {
resposta = JOptionPane.showInputDialog(null,
"Deseja finalizar o programa?",
"Finalização",
JOptionPane.PLAIN_MESSAGE,
null,
opcoes,
"não");
} while (resposta == null || resposta.equals("não"));
}
}
No exemplo acima, criamos uma lista com dois objetos: "sim" e "não". E já definimos "não" como opção pré-selecionada. Removemos qualquer ícone com as opções PLAIN_MESSAGE e ícone null. Criamos um laço (loop) com while que sempre irá repetir a mesma caixa enquanto o botão Cancel ou a opção "não" forem selecionados. Abaixo está um exemplo mais funcional, divertido e simples de fazer e entender. Trata-se de um jogo de adivinhar onde um número é escolhido e temos que adivinhar qual número foi sorteado. No exemplo, serão 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 número qualquer entre 0 e 10
int rndNr = (int) Math.ceil(Math.random() * 10);
// lista de opções para o combo box da caixa de diálogo
Object[] opcoes = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
// string onde será retornado o resultado
String resposta;
while (true) {
// loop para evitar que o jogo feche depois da primeira resposta
resposta = (String) JOptionPane.showInputDialog(null,
"Em que número estou pensando?", "Jogo de Advinhar",
JOptionPane.QUESTION_MESSAGE, null, opcoes, null);
if (resposta == null) {
/*
* se clicar no botão 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 número sorteado
* para ver se é maior
*/
JOptionPane.showMessageDialog(null,
"Errado!\nO número que eu pensei é menor.");
} else if (Integer.valueOf(resposta) < rndNr) {
/*
* Interpreta string como inteiro e compara com o número sorteado
* para ver se é maior
*/
JOptionPane.showMessageDialog(null,
"Errado!\nO número que eu pensei é maior.");
} else {
/*
* se não for nem maior e nem menor, então é igual.
* Finaliza o jogo saindo do loop
*/
JOptionPane.showMessageDialog(null,
"Parabéns\nVocê adivinhou!\n"
+ "Eu realmente pensei no número " + rndNr);
break;
}
}
}
}
Páginas Relacionadas |
Enquete
|