具有相同数据的多个JComboBox,每个项目可以选择一次

时间:2018-12-07 20:44:15

标签: jcombobox

我在这里变得越来越绝望...:

我确实有一个带有40个JComboBox的框架。首先,他们提供所有相同的物品。 如果我在一个特定的组合框中选择项目,则应在其中选择该项目,而在其他所有39个框中都不再可用。

我尝试使用ComboBoxModel很长时间了,但是现在我认为这没有任何意义:此刻,我从模型中删除了选中的项目,它也从选中它的Box中删除了。 / p>

这样做是有意义的吗?

  • 在类GUI中具有40个MyComboBoxes
  • 每个MyComboBox都实现一个ItemListener
  • 如果选择了某个项目,则该项目将从其他39个列表中删除; 如果取消选择,它将添加到其他39个列表中 (但是,如果我想那样做,则监听器不能是一个自己的类,但是 itemEventChanged方法必须在GUI中匿名实现吗?!)

还有更好的方法,不是吗?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

       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
             }
        }
    }

这假定您在组合框数组的每个索引上都有一个动作侦听器