java - JOptionPane.showInputDialog 显示两次

标签 java swing checkbox joptionpane itemlistener

当我按下投诉框时,每个输入对话框都显示两次...我尝试删除 boxComplain.setSelected(true) 并且它有效(只显示一次)但是这使得复选框在我输入输入后消失.

    class CheckBoxListener implements ItemListener {  

    public void itemStateChanged(ItemEvent event) {  
    if(boxComplain.isSelected())

      {
          ab=JOptionPane.showInputDialog("Enter Reason of Complain: ");
          ac=JOptionPane.showInputDialog("Enter What The Complain is About: ");
          label4.setText("Complain request");
          boxComplain.setSelected(true);
      }
      }
      }

最佳答案

ItemListener 被调用两次——一次是在原始选择被更改时,第二次是在新选择被注册时。考虑改用 ActionListener。

另一个技巧是删除和添加 ItemListener:

     public void itemStateChanged(ItemEvent event) {
        if(boxComplain.isSelected()) {
           ab=JOptionPane.showInputDialog("Enter Reason of Complain: ");
           ac=JOptionPane.showInputDialog("Enter What The Complain is About: ");
           label4.setText("Complain request");
           boxComplain.removeItemListener(this);
           boxComplain.setSelected(true);
           boxComplain.addItemListener(this);
         }
     }

关于java - JOptionPane.showInputDialog 显示两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16623650/

相关文章:

java - 如何在 Controller 中获取复选框

java - 如何为弹出窗口录制 Selenium 脚本?

java - 混合外观和感觉

javascript - 更新在 iOS 中的 javascript func 中选中的复选框

java - JVM 没有释放虚拟内存

java - 将 Kafka 的 murmur2 实现移植到 Go

java - 按键不起作用

java - Swing-从多行中识别一行

javascript - 与点击功能相反

javascript - 带有确认的复选框,如果取消则保留原始复选框值