我是Java和Swing的新手,正在关注zetcode tutorial。我想添加多个JComboBox
es并存储为其中每个选择的索引。 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])));
}
}
因此,如果我可以编写应为每个JComboBox
调用的itemlistener的名称,然后我可以编写combobox.addItemListener(this)
而不是编写combobox.addItemListener(itemListener1)
。我该怎么做?
答案 0 :(得分: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
}
答案 1 :(得分:0)
使用内部或匿名类,有助于避免使用“if - else”语句。
Exemple!匿名类