1

当我按下投诉框时,每个输入对话框显示两次...我尝试删除 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);
      }
      }
      }
4

1 回答 1

3

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);
         }
     }
于 2013-05-18T11:26:37.897 回答