0

私は Java と Swing が初めてで、 zetcode チュートリアルに従っています。JComboBox複数のes を追加し、それらのそれぞれに対して選択されたインデックスを保存したいと考えています。index1の最初のインスタンスから選択されたインデックスを保持し、 の 2 番目のインスタンスから選択されたインデックスを保持する必要がありJComboBoxます。1つは、次のように実行できます。index2JComboBoxJComboBox

public ComboBox() {

    setLayout(new BoxLayout(getContentPane(), 
    BoxLayout.Y_AXIS));
    add(Box.createRigidArea(new Dimension(0, 35)));

    combobox = new JComboBox(authors);
    combobox.addItemListener(this);
    add(combobox);
}
public void itemStateChanged(ItemEvent e) {

    if (e.getStateChange() == ItemEvent.SELECTED) {
        JComboBox combo = (JComboBox) e.getSource();
        int index = combo.getSelectedIndex();
        display.setIcon(new ImageIcon(
            ClassLoader.getSystemResource(images[index])));
    }

}

したがって、それぞれに対して呼び出されるべき itemlistener の名前を書くことができれば、 をJComboBox書く代わりに、 を書くcombobox.addItemListener(this)ことができますcombobox.addItemListener(itemListener1)。どうすればいいですか?

4

2 に答える 2

2

このようにしてみてください

combobox1.addItemListener(this);
combobox2.addItemListener(this);
..
comboboxn.addItemListener(this);

public void actionPerformed(ActionEvent e) {
 if(e.getSource().equals(comboBox1))
 {
  \\do something
 }
 else if(e.getSource().equals(comboBox2))
 {
  \\do something
 }
..
 else if(e.getSource().equals(comboBoxn))
 {
  \\do something
 }
于 2013-11-07T05:24:09.607 に答える
0

内部クラスまたは匿名クラスを使用すると、'if - else' ステートメントを避けるのに役立ちます。

!無名クラスの

于 2013-11-07T05:40:41.967 に答える