【发布时间】:2015-04-24 20:04:49
【问题描述】:
我有以下代码,以便根据用户选择显示一个列表:
private class SheepTypeListHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
JComboBox<String> cb = (JComboBox<String>)(e.getSource());
if (cb.getSelectedItem().equals(sheepType[0])) {
for (String item : eweClass )
sheepClassCB.addItem(item);
}
else if (cb.getSelectedItem().equals(sheepType[1])) {
for (String item : ramClass )
sheepClassCB.addItem(item);
for (String item : weight3 )
weightCB.addItem(item);
}
else if (cb.getSelectedItem().equals(sheepType[2])) {
for (String item : lambClass )
sheepClassCB.addItem(item);
}
}
} //End SheepTypeListHandler class
目前,根据您选择的内容,会弹出一个新列表。但是,如果您改变主意并选择一个新项目,而不是覆盖现有的内容,它只会将新列表添加到第一个列表的底部。
例如: 如果用户选择sheepType[2],则会出现以下列表:
Finishing
Early-weaned
现在如果他们改变主意并选择sheepType[0]而不是这个列表:
Maintenance
Nonlactating, first 15 weeks gestation
Last 6 wks gestation OR Last 8 wks lactation suckling singles
First 8 wks lactation suckling singles OR last 8 wks lactation suckling twins
First 8 weeks lactation suckling twins
Replacement lambs and yearlings
我明白了:
Finishing
Early-weaned
Maintenance
Nonlactating, first 15 weeks gestation
Last 6 wks gestation OR Last 8 wks lactation suckling singles
First 8 wks lactation suckling singles OR last 8 wks lactation suckling twins
First 8 weeks lactation suckling twins
Replacement lambs and yearlings
如何更改当前代码以在进行新选择时覆盖而不是仅添加到列表中? 谢谢!
更新: 将我的部分代码编辑为以下内容:
private class SheepTypeListHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
sheepClassCB.removeAllItems();
if (sheepListCB.getSelectedItem().equals(sheepType[0])) {
//sheepClassCB.removeAllItems(); //This did not work
for (String item : eweClass ){
sheepClassCB.addItem(item);
}
}
else if (sheepListCB.getSelectedItem().equals(sheepType[1])) {
for (String item : ramClass )
sheepClassCB.addItem(item);
for (String item : weight3 )
weightCB.addItem(item);
}
else if (sheepListCB.getSelectedItem().equals(sheepType[2])) {
for (String item : lambClass )
sheepClassCB.addItem(item);
}
}
}
现在我第一次从列表中选择一个项目时它可以工作。但是如果我重新选择一个不同的项目,它会显示一个空列表。
【问题讨论】:
-
所以在添加数据之前清除列表。查看您的组件的 API 以查看它是否具有此方法。否则,请查看组件模型的 API 以了解方法是什么。
-
sheepClassCB是什么类型? -
sheepClassCB是从字符串数组列表生成的 JComboBox:JComboBox<String> sheepListCB = new JComboBox<>(sheepType); -
查看我的答案并找出我的工作代码和你的代码之间的区别。
标签: java swing user-interface jcombobox