У меня есть следующий код, чтобы на основе выбора пользователя отображался список:
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
В настоящее время, в зависимости от того, что вы выбираете, появляется новый список. Однако, если вы передумаете и выберете новый элемент, вместо переопределения того, что есть, он просто добавит новый список в конец первого списка.
Например: Если пользователь выбирает овецТип[2], то появляется следующий список:
Finishing
Early-weaned
Теперь, если они передумают и выберут овцуType[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);
}
}
}
Теперь, когда я впервые выбираю элемент из списка, он работает. Но если я повторно выберу другой элемент, он покажет пустой список.
sheepClassCB
? - person user1803551   schedule 25.04.2015sheepClassCB
— это JComboBox, сгенерированный из списка массивов строк:JComboBox<String> sheepListCB = new JComboBox<>(sheepType);
- person tinkerton101   schedule 25.04.2015