0

我是 Java 和 Swing 的新手,正在关注zetcode 教程。我想添加多个JComboBoxes 并存储为每一个选择的索引。index1应该从 的第一个实例中保存选定的索引,JComboBox并且index2应该从 的第二个实例中保存选定的索引JComboBox。一方面JComboBox,它可以这样做:

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 回答