SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
www.tiexpert.net                                                               Pág. 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 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 showInputDialog() que é responsável em criar uma caixa
de diálogo requisitando uma entrada de dado. Este método é sobrecarregado de várias
maneiras. A forma mais simples de seus argumentos é:
    1. A mensagem que deve ser exibida para o usuário.
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:
    1. A mensagem que deve ser exibida ao usuário.
    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 código JOptionPane.showInputDialog("Qual o seu nome?", "Digite seu nome aqui.")
geraria a seguinte caixa:




Uma das formas mais completas desse método inclui alterar, inclusive, o título da caixa.
Assim, usa-se 4 argumentos:
    1. De qual frame a caixa de diálogo é dependente, ou seja, qual a janela principal que
       chamou a caixa Input Dialog. Caso a caixa de diálogo não dependa de nenhum frame ou
       janela principal, basta utilizarmos o valor null para este argumento.
    2. A mensagem que deve ser exibida ao usuário.
    3. O título da caixa de texto.
    4. Que tipo de mensagem é. O tipo de mensagem define qual o ícone será utilizado,
       podendo ser utilizados os números inteiros representados pelas constantes:
http://www.tiexpert.net/programacao/java/showinputdialog.php
www.tiexpert.net                                                             Pág. 2 de 4
          • 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.
          • QUESTION_MESSAGE (valor: 3): Mensagem de requisição ou pergunta. Esta é a
            opção padrão do método showInputDialog().
Ex.: O código JOptionPane.showInputDialog(null, "Qual o seu Nome?", "Pergunta",
JOptionPane.PLAIN_MESSAGE) geraria a seguinte caixa:




Obter valor de showInputDialog
O método showInputDialog pode retornar dois valores: ou uma string ou null.
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ções
Outra 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:
    1. De qual frame a caixa de diálogo é dependente, ou seja, qual a janela principal que
       chamou a caixa Input Dialog. Caso a caixa de diálogo não dependa de nenhum frame ou
       janela principal, basta utilizarmos o valor null para este argumento.
    2. A mensagem que deve ser exibida ao usuário.
    3. O título da caixa de texto.
    4. Que tipo de mensagem é. O tipo de mensagem define qual o ícone será utilizado,
       podendo ser utilizados os números inteiros representados pelas constantes da mesma
       forma como foi mostrada anteriormente.
http://www.tiexpert.net/programacao/java/showinputdialog.php
www.tiexpert.net                                                              Pág. 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 próximos artigos.
    6. O segredo do combo box está neste argumento. Aqui virá um array (vetor) de objetos
       que serão nossos valores pré-definidos.
    7. O último argumento serve apenas para indicar qual elemento do array (vetor) deve vir
       selecionado no início. Caso não desejarmos que um ítem seja selecionado no início
       basta utilizarmos null.
O array (vetor) de objetos deve ser genérico, portanto, utilizamos a classe Object para criar
este array.
O método showInputDialog com combo box se diferencia do showInputDialog com caixa de
texto pelo seguinte fato: o que é retornado dessa vez não 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, não uma string como
acontecia com o Input Dialog com caixa de texto.
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;

http://www.tiexpert.net/programacao/java/showinputdialog.php
www.tiexpert.net                                                                           Pág. 4 de 4
        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énsnVocê adivinhou!n"
                               + "Eu realmente pensei no número " + rndNr);
             break;
          }
        }
    }
}

                                                                                  Autor: Denys William Xavier
                                                            Este artigo está sob Licença Creative Commons
          Para ver uma cópia desta licença, 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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

Java12
Java12Java12
Java12
 
Java14
Java14Java14
Java14
 
Java 06
Java 06Java 06
Java 06
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
07 programando em python - funcoes
 07   programando em python - funcoes 07   programando em python - funcoes
07 programando em python - funcoes
 
Java6
Java6Java6
Java6
 
Java4
Java4Java4
Java4
 
Java7
Java7Java7
Java7
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Java13
Java13Java13
Java13
 
Java11
Java11Java11
Java11
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Java2
Java2Java2
Java2
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Programando em python interfaces graficas com tk
Programando em python   interfaces graficas com tkProgramando em python   interfaces graficas com tk
Programando em python interfaces graficas com tk
 
Programando em python excecoes
Programando em python   excecoesProgramando em python   excecoes
Programando em python excecoes
 

Ähnlich wie Showinputdialog

Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formulariosguestd9e271
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doublePAULO Moreira
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetosunifesptk
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funçõesCarla Lee
 
ALGEBRA 06 - Tipos Primitivos de Dados.ppt
ALGEBRA 06 - Tipos Primitivos de Dados.pptALGEBRA 06 - Tipos Primitivos de Dados.ppt
ALGEBRA 06 - Tipos Primitivos de Dados.ppttridapalliadriana
 
Curso de python capítulo 1 - introdução
Curso de python   capítulo 1 - introduçãoCurso de python   capítulo 1 - introdução
Curso de python capítulo 1 - introduçãoRicardo Fahham
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAyrton Yagami
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 

Ähnlich wie Showinputdialog (20)

Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formularios
 
Java10
Java10Java10
Java10
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Java básico - Módulo 06: Array
Java básico - Módulo 06: ArrayJava básico - Módulo 06: Array
Java básico - Módulo 06: Array
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
ALGEBRA 06 - Tipos Primitivos de Dados.ppt
ALGEBRA 06 - Tipos Primitivos de Dados.pptALGEBRA 06 - Tipos Primitivos de Dados.ppt
ALGEBRA 06 - Tipos Primitivos de Dados.ppt
 
Curso de python capítulo 1 - introdução
Curso de python   capítulo 1 - introduçãoCurso de python   capítulo 1 - introdução
Curso de python capítulo 1 - introdução
 
Aulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton YagamiAulas de estrutura de dados por Ayrton Yagami
Aulas de estrutura de dados por Ayrton Yagami
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09ESTRUTURA DE DADOS (JAVA) AULA 09
ESTRUTURA DE DADOS (JAVA) AULA 09
 
Excel VBA: Aula 8
Excel VBA: Aula 8Excel VBA: Aula 8
Excel VBA: Aula 8
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Ficha teorica aula_input_reader
Ficha teorica aula_input_readerFicha teorica aula_input_reader
Ficha teorica aula_input_reader
 
Aula 8
Aula 8Aula 8
Aula 8
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 

Mehr von PAULO Moreira

5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controlePAULO Moreira
 
3.2 introdução a linguagem java
3.2 introdução a linguagem java3.2 introdução a linguagem java
3.2 introdução a linguagem javaPAULO Moreira
 
3.1 introdução a linguagem java
3.1 introdução a linguagem java3.1 introdução a linguagem java
3.1 introdução a linguagem javaPAULO Moreira
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a ooPAULO Moreira
 
Trabalho de empreendedorismo
Trabalho de empreendedorismoTrabalho de empreendedorismo
Trabalho de empreendedorismoPAULO Moreira
 
Seminário de empreendedorismo
Seminário de empreendedorismoSeminário de empreendedorismo
Seminário de empreendedorismoPAULO Moreira
 
5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slimPAULO Moreira
 
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...PAULO Moreira
 
Interrupções e interconexões
Interrupções e interconexõesInterrupções e interconexões
Interrupções e interconexõesPAULO Moreira
 
Hierarquia de memória
Hierarquia de memóriaHierarquia de memória
Hierarquia de memóriaPAULO Moreira
 
Funcionamento de um sistema de computação
Funcionamento de um sistema de computaçãoFuncionamento de um sistema de computação
Funcionamento de um sistema de computaçãoPAULO Moreira
 

Mehr von PAULO Moreira (20)

Metodos
MetodosMetodos
Metodos
 
5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controle
 
3.2 introdução a linguagem java
3.2 introdução a linguagem java3.2 introdução a linguagem java
3.2 introdução a linguagem java
 
3.1 introdução a linguagem java
3.1 introdução a linguagem java3.1 introdução a linguagem java
3.1 introdução a linguagem java
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a oo
 
1. apresentação
1. apresentação1. apresentação
1. apresentação
 
String
StringString
String
 
Math
MathMath
Math
 
Negociação
NegociaçãoNegociação
Negociação
 
Trabalho de empreendedorismo
Trabalho de empreendedorismoTrabalho de empreendedorismo
Trabalho de empreendedorismo
 
Seminário de empreendedorismo
Seminário de empreendedorismoSeminário de empreendedorismo
Seminário de empreendedorismo
 
7. ecologia
7. ecologia7. ecologia
7. ecologia
 
6. conjuntura
6. conjuntura6. conjuntura
6. conjuntura
 
5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim
 
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
 
Empreendedorismo
EmpreendedorismoEmpreendedorismo
Empreendedorismo
 
Interrupções e interconexões
Interrupções e interconexõesInterrupções e interconexões
Interrupções e interconexões
 
Hierarquia de memória
Hierarquia de memóriaHierarquia de memória
Hierarquia de memória
 
Funcionamento de um sistema de computação
Funcionamento de um sistema de computaçãoFuncionamento de um sistema de computação
Funcionamento de um sistema de computação
 
Disco rígido - Hd
Disco rígido - HdDisco rígido - Hd
Disco rígido - Hd
 

Showinputdialog

  • 1. www.tiexpert.net Pág. 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 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 showInputDialog() que é responsável em criar uma caixa de diálogo requisitando uma entrada de dado. Este método é sobrecarregado de várias maneiras. A forma mais simples de seus argumentos é: 1. A mensagem que deve ser exibida para o usuário. 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: 1. A mensagem que deve ser exibida ao usuário. 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 código JOptionPane.showInputDialog("Qual o seu nome?", "Digite seu nome aqui.") geraria a seguinte caixa: Uma das formas mais completas desse método inclui alterar, inclusive, o título da caixa. Assim, usa-se 4 argumentos: 1. De qual frame a caixa de diálogo é dependente, ou seja, qual a janela principal que chamou a caixa Input Dialog. Caso a caixa de diálogo não dependa de nenhum frame ou janela principal, basta utilizarmos o valor null para este argumento. 2. A mensagem que deve ser exibida ao usuário. 3. O título da caixa de texto. 4. Que tipo de mensagem é. O tipo de mensagem define qual o ícone será utilizado, podendo ser utilizados os números inteiros representados pelas constantes: http://www.tiexpert.net/programacao/java/showinputdialog.php
  • 2. www.tiexpert.net Pág. 2 de 4 • 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. • QUESTION_MESSAGE (valor: 3): Mensagem de requisição ou pergunta. Esta é a opção padrão do método showInputDialog(). Ex.: O código JOptionPane.showInputDialog(null, "Qual o seu Nome?", "Pergunta", JOptionPane.PLAIN_MESSAGE) geraria a seguinte caixa: Obter valor de showInputDialog O método showInputDialog pode retornar dois valores: ou uma string ou null. 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ções Outra 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: 1. De qual frame a caixa de diálogo é dependente, ou seja, qual a janela principal que chamou a caixa Input Dialog. Caso a caixa de diálogo não dependa de nenhum frame ou janela principal, basta utilizarmos o valor null para este argumento. 2. A mensagem que deve ser exibida ao usuário. 3. O título da caixa de texto. 4. Que tipo de mensagem é. O tipo de mensagem define qual o ícone será utilizado, podendo ser utilizados os números inteiros representados pelas constantes da mesma forma como foi mostrada anteriormente. http://www.tiexpert.net/programacao/java/showinputdialog.php
  • 3. www.tiexpert.net Pág. 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 próximos artigos. 6. O segredo do combo box está neste argumento. Aqui virá um array (vetor) de objetos que serão nossos valores pré-definidos. 7. O último argumento serve apenas para indicar qual elemento do array (vetor) deve vir selecionado no início. Caso não desejarmos que um ítem seja selecionado no início basta utilizarmos null. O array (vetor) de objetos deve ser genérico, portanto, utilizamos a classe Object para criar este array. O método showInputDialog com combo box se diferencia do showInputDialog com caixa de texto pelo seguinte fato: o que é retornado dessa vez não 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, não uma string como acontecia com o Input Dialog com caixa de texto. 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; http://www.tiexpert.net/programacao/java/showinputdialog.php
  • 4. www.tiexpert.net Pág. 4 de 4 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énsnVocê adivinhou!n" + "Eu realmente pensei no número " + rndNr); break; } } } } Autor: Denys William Xavier Este artigo está sob Licença Creative Commons Para ver uma cópia desta licença, 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