具有相同数据的多个 JComboBoxes,每个项目可选择一次
Multiple JComboBoxes with same data, every item choosable once
我在这里越来越绝望......:[=10=]
我有一个包含 40 个 JComboBox 的 FRAME。起初,他们提供所有相同的项目。
如果我在一个特定的 ComboBox 中选择项目,它应该在那里被选中,并且不再在所有其他 39 个 Boxes 中可用。
我尝试使用 ComboBoxModel 很长一段时间,但现在我认为它没有任何意义:我从模型中删除所选项目的那一刻,它也从它被选中的 Box 中删除.
那么这样做有意义吗:
- 在 class GUI 中拥有 40 个 MyComboBoxes
- 每个 MyComboBox 实现一个 ItemListener
- 如果选择了一个项目,则该项目将从其他 39 个列表中删除;
如果取消选择,它将被添加到其他 39 个列表中
(但如果我想那样做,听众不能是自己的 class 但
itemEventChanged 方法必须在 GUI 中匿名实现?!)
有更好的方法,不是吗?非常感谢您的帮助!
for(int x =0;x<YourComboBoxArray.length();x++
{
if(e.getSource()==YourComboBoxArray[x])
{
try
{
ArrayList <String> OptionsList = new ArrayList();
for(int i=0;i<YourComboBoxArray[x].getItemCount();i++)
{
OptionsList.add(TeamPlayercmbx[x].getItemAt(i).toString();
}
DefaultComboBoxModel DCMB = new DefaultComboBoxModel(OptionsList.toArray());
YourComboBoxArray[x+1].setModel(DCMB);
YourComboBoxArray[x+1].removeItem(YourComboBoxArray[x].getSelectedItem());
}
catch(Exception ex)
{
//Log your errors or whatever you want to do if it's the last ComboBox in the Array
}
}
}
这假设您在组合框数组的每个索引上都有一个动作侦听器
我在这里越来越绝望......:[=10=]
我有一个包含 40 个 JComboBox 的 FRAME。起初,他们提供所有相同的项目。 如果我在一个特定的 ComboBox 中选择项目,它应该在那里被选中,并且不再在所有其他 39 个 Boxes 中可用。
我尝试使用 ComboBoxModel 很长一段时间,但现在我认为它没有任何意义:我从模型中删除所选项目的那一刻,它也从它被选中的 Box 中删除.
那么这样做有意义吗:
- 在 class GUI 中拥有 40 个 MyComboBoxes
- 每个 MyComboBox 实现一个 ItemListener
- 如果选择了一个项目,则该项目将从其他 39 个列表中删除; 如果取消选择,它将被添加到其他 39 个列表中 (但如果我想那样做,听众不能是自己的 class 但 itemEventChanged 方法必须在 GUI 中匿名实现?!)
有更好的方法,不是吗?非常感谢您的帮助!
for(int x =0;x<YourComboBoxArray.length();x++
{
if(e.getSource()==YourComboBoxArray[x])
{
try
{
ArrayList <String> OptionsList = new ArrayList();
for(int i=0;i<YourComboBoxArray[x].getItemCount();i++)
{
OptionsList.add(TeamPlayercmbx[x].getItemAt(i).toString();
}
DefaultComboBoxModel DCMB = new DefaultComboBoxModel(OptionsList.toArray());
YourComboBoxArray[x+1].setModel(DCMB);
YourComboBoxArray[x+1].removeItem(YourComboBoxArray[x].getSelectedItem());
}
catch(Exception ex)
{
//Log your errors or whatever you want to do if it's the last ComboBox in the Array
}
}
}
这假设您在组合框数组的每个索引上都有一个动作侦听器