2

次のように、forループでコンボボックスの配列を作成します。

for(int i = 0; i < 5; i++) {
  ...
  comboStudy[i] = new JComboBox(studyModel);
  comboStudy[i].addActionListener(new studyListener());
  comboStudy[i].setActionCommand("" + i);
  ...
}

リスナーはインスタンスの内部クラスです。

public class studyListener implements ActionListener {
  public void actionPerformed(ActionEvent evt) {  
    int i = Integer.parseInt(evt.getActionCommand());

    // do some stuff that requires i and also access 
    // to the instance members of the containing class
  }
}

私が今直面している問題は、comboStudy [0]で実行時に選択を行うたびに、アクションイベントが5回発生することです。初めてiが4になると、0になるまで毎回減少します。

ItemListenerを使用して試しましたが、同じ問題があります。

助けてください!

4

1 に答える 1

2

これは、すべての JComboBox で同じものを使用しているためです。 ComboBoxModel

それぞれJComboBoxが のリスナーでありComboxBoxModelComboBoxModelデータ モデルが変更されるたびに は各リスナーに通知します。で項目を選択するJComboBoxと、ComboBoxModel変更がそれぞれの にイベントを発生させますJComboBox。これが、各 で発生しているイベントが表示される理由ですJComboBox

于 2012-10-04T11:59:45.387 に答える