JOptionPane.showInputDialog显示两次,为什么?

时间:2017-10-30 01:21:00

标签: java swing

我最近在java中开发了一个swing应用程序,问题是每当我需要将数据输入到JOptionPane.showInputDialog时,这会被调用两次,无论我在基本测试中做什么,总是显示为double。在第一个窗口中,我输入数据,当单击时,接受另一个窗口也同时显示,忽略第一个窗口。提及我的应用程序运行正常非常重要,但是当我需要在第3号选项中执行切换语句时,问题就出现了。

这是我的代码。

private void jcTemplatesItemStateChanged(java.awt.event.ItemEvent evt) {                                             

    int seleccionar = jcTemplates.getSelectedIndex();

    switch (seleccionar) {

        case 1:

            templateField2.setText(jcTipoCliente.getSelectedItem() + " " + txtCliente.getText() + " comenta que no reconoce POD. Favor de realizar rescate del envio y entregarlo en la direccion correcta. Se le informa sobre proceso y tiempo requerido de 24-48 hrs. Queda Ok. Gracias.  ");
            break;

        case 2:
            templateField2.setText(jcTipoCliente.getSelectedItem() + " " + txtCliente.getText() + " llama para requerir informacion sobre el status del envio, ya que menciona que ha tomado demasiado tiempo y requiere confirmar fecha de entrega. Favor de actualizar a la brevedad. Se le pide tiempo y queda Ok. Gracias. ");
            break;

        case 3:

            String dato = JOptionPane.showInputDialog(null, "NCI", "Verificar", JOptionPane.OK_CANCEL_OPTION);
            if (JOptionPane.YES_OPTION == 0) 
                templateField2.setText(dato);
             else if (JOptionPane.NO_OPTION == 1) 
                dispose();
        break;

    }

1 个答案:

答案 0 :(得分:1)

ItemListener可能会触发两个事件。一个用于itemDeselected,一个用于itemSelected。您只想显示所选事件的选项窗格。

阅读How to Write an ItemListener上Swing教程中的部分,了解更多信息和一个工作示例,以帮助您入门。