1

苦情ボックスを押すと、各入力ダイアログが2回表示されます... boxComplain.setSelected(true)を削除しようとしましたが、機能しました(1回だけ表示されました)が、入力を入力した後にチェックボックスが移動しました。

    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 は 2 回呼び出されます。1 回目は元の選択が変更されたとき、2 回目は新しい選択が登録されたときです。代わりに 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 に答える