我有一个ActionListener附加到JComboBox(不可编辑)。一旦选择了JComboBox中的项目,我就必须使框架中的下一个按钮可见。
代码的骨架如下所示:
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource()==jComboBox){
if(jComboBox.getSelectedIndex()==-1)
//Display an alert message
else{
nextButton.setVisible(true);
//Do other actions
}
}
}
发现只有在选择了第二个,第三个,第四个(等等)项时才会调用actionPerformed。但是第一次选择第一个项目时不会调用actionPerformed。但如果在选择其他项目后选择了第一个项目,则会调用actioPerformed并且代码正常工作。
此错误在某些系统上出现,而在其他系统上则不出现。在这方面的任何帮助将不胜感激。
先谢谢!!
答案 0 :(得分:2)
这是正常的行为。重新选择同一项时不会触发ActionEvent。如果您希望在创建组合框时触发事件,那么您的代码应该类似于:
JComboBox comboBox = new JComboBox(...);
comboBox.setSelectedIndex(-1); // remove automatic selection of first item
comboBox.addActionListener(...);
comboBox.setSelectedIndex(0);
或
JComboBox comboBox = new JComboBox();
comboBox.addActionListener(...);
comboBox.addItem(...);
comboBox.addItem(...);
答案 1 :(得分:0)
好像你第一个条件有点不对。
如果您想在JComboBox中没有项目时执行某些代码,则应检查内容大小:jComboBox.getItemCount()==0
而不是jComboBox.getSelectedIndex()==-1
,因为所选索引可能取决于各种条件,而getItemCount()当组合框为空时,只有0: - )