Dúvidas showInputDialog - Tratamento do botão Cancelar

E ae pessoal

Estou com uma dúvida, creio que seja simples…

Tenho uma classe do menu principal de um programinha básico de cadastro, e estou usando a caixas de dialogo em interface gráfica. Ele pede para escolher as opções de 1 a 5 para acessar as outras telas e para sair quando eu clico no botão OK. Se eu não clicar em nada e escolher o botão CANCELAR a String vem “null” aí eu trato ela e mando o programa finalizar usando o método break(). Quando eu clico em OK sem digitar nada no input a String passa a valer “” (Vazio) e acaba gerando erro na execução. Eu queria assim: Digitei OK, mas com o campo do input vazio e o programa mandava um showMessageDialog dizendo “Opção inválida ou Campo vazio” e retornava na seleção das opções, sem parar a execução e sem dar erro. Acho da pra entender, alguem pode me ajudar? =)

public class MenuPrincipal {

    public MenuPrincipal() throws SQLException {
        menuPrincipal();
    }

    public void menuPrincipal() throws SQLException {
        int opcao = -1;

        while (opcao != 0) {
            String entrada = JOptionPane.showInputDialog(null, "Digite a opção desejada: \n"
                    + "1 - Cadastro de Usuário \n"
                    + "2 - Cadastro Cargo \n"
                    + "3 - Cadastro de Departamento \n"
                    + "4 - Definir o Departamento do Usuário \n"
                    + "0 - Sair", "Sistema de Cadastro 1.0", -1);

            if (entrada == null) {
                break;
            }
            if ("".equals(entrada)) {
                
            }

            opcao = Integer.parseInt(entrada);

            switch (opcao) {
                case 1:
                    cadastroUsuario();
                    break;
                case 2:
                    cadastroCargo();
                    break;
                case 3:
                    cadastroDepartamento();
                    break;
                case 4:
                    cadastroDepartamentoUsuario();
                    break;
                case 0:
                    break;
            }
        }
    }

    private void cadastroUsuario() throws SQLException {
        new MenuUsuario();
    }

    private void cadastroCargo() throws SQLException {
        new MenuCargo();
    }

    private void cadastroDepartamento() throws SQLException {
        new MenuDepartamento();
    }

    private void cadastroDepartamentoUsuario() throws SQLException {
        new MenuDepartamentoUsuario();
    }
}

[quote=danilosfc]E ae pessoal

Estou com uma dúvida, creio que seja simples…

Tenho uma classe do menu principal de um programinha básico de cadastro, e estou usando a caixas de dialogo em interface gráfica. Ele pede para escolher as opções de 1 a 5 para acessar as outras telas e para sair quando eu clico no botão OK. Se eu não clicar em nada e escolher o botão CANCELAR a String vem “null” aí eu trato ela e mando o programa finalizar usando o método break(). Quando eu clico em OK sem digitar nada no input a String passa a valer “” (Vazio) e acaba gerando erro na execução. Eu queria assim: Digitei OK, mas com o campo do input vazio e o programa mandava um showMessageDialog dizendo “Opção inválida ou Campo vazio” e retornava na seleção das opções, sem parar a execução e sem dar erro. Acho da pra entender, alguem pode me ajudar? =)

while (opcao != 0) {  
            String entrada = JOptionPane.showInputDialog(null, "Digite a opção desejada: \n"  
                    + "1 - Cadastro de Usuário \n"  
                    + "2 - Cadastro Cargo \n"  
                    + "3 - Cadastro de Departamento \n"  
                    + "4 - Definir o Departamento do Usuário \n"  
                    + "0 - Sair", "Sistema de Cadastro 1.0", -1);  
            
            if(!"1".equals(entrada) && !"2".equals(entrada) && !"3".equals(entrada) && !"4".equals(entrada) && !"0".equals(entrada)){
                JOptionPane.showMessageDialog(null, "Valor digitado invalido.");
            }else{
                opcao = Integer.parseInt(entrada);
            }

[/quote]
Amigo, coloque essa condição abaixo do metodo jOptionPane como mostra acima.

Ele estava dando erro, porque quando você clicava em OK, você tentava atribuir a variavel opcao o valor “”. E como a variavel opcao é do tipo inteira dava erro.

Ver ae se resolve e da um retorno.

Opa, deu certo Márcio!! Obrigado.

O código ficou assim:

            if (entrada == null) {
                break;
            } else if (!"1".equals(entrada) && !"2".equals(entrada) && !"3".equals(entrada) && !"4".equals(entrada) && !"0".equals(entrada)) {
                JOptionPane.showMessageDialog(null, "Valor digitado inválido", "Sistema de Cadastro 1.0", 2);
            } else {
                opcao = Integer.parseInt(entrada);
            }
            if (entrada == null) {
                break;
            }

É pra quando alguém clicar em cancelar, ele fechar automaticamente e se alguém não digitar nada e clicar em OK, ele exibe a caixa de erro.

Obrigado!
=)

[quote=danilosfc]Opa, deu certo Márcio!! Obrigado.

O código ficou assim:

            if (entrada == null) {
                break;
            } else if (!"1".equals(entrada) && !"2".equals(entrada) && !"3".equals(entrada) && !"4".equals(entrada) && !"0".equals(entrada)) {
                JOptionPane.showMessageDialog(null, "Valor digitado inválido", "Sistema de Cadastro 1.0", 2);
            } else {
                opcao = Integer.parseInt(entrada);
            }
            if (entrada == null) {
                break;
            }

É pra quando alguém clicar em cancelar, ele fechar automaticamente e se alguém não digitar nada e clicar em OK, ele exibe a caixa de erro.

Obrigado!
=)[/quote]

Que Bom danilosfc.

Sempre tente realizar tratamentos do tipo, e no momento que for atribuir um valor a uma variavel, esteja seguro de que realmente o valor é compativel com o tipo da variavel.

Vlw…