java - 具有相同数据的多个 JComboBoxes,每个项目可选择一次
问题描述
我在这里越来越绝望......:
我确实有一个带有 40 个 JComboBox 的 FRAME。起初,他们提供所有相同的项目。如果我在一个特定的 ComboBox 中选择项目,则应该在那里选择它,并且不再在所有其他 39 个框中可用。
我尝试使用 ComboBoxModel 很长一段时间,但现在我认为它没有任何意义:在我从模型中删除所选项目的那一刻,它也从它被选中的 Box 中删除。
这样做是否有意义:
- 在类 GUI 中有 40 个 MyComboBoxes
- 每个 MyComboBox 都实现一个 ItemListener
- 如果选择了一个项目,则该项目将从其他 39 个列表中删除;如果它被取消选择,它将被添加到其他 39 个列表中(但如果我想这样做,监听器不能是一个自己的类,但 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
}
}
}
这假设您在组合框数组的每个索引上都有一个动作侦听器
推荐阅读
- python - 将熊猫数据框保存在另一个数据框中
- r - 向地理编码数据添加状态线
- python - python中的一对多加入,由于一对多加入而创建的重复记录为零填充
- apache - htaccess 将 API 重定向到子文件夹
- javascript - 连接功能以协同工作和数量计数
- node.js - 什么时候应该在 Node.js 中创建 redis 客户端?
- typescript - 复制子类的抽象函数的正确返回类型
- swift - 使用 swift 从 firebase 数据库中删除特定值
- linux - 用 n 步旋转文本文件中的行
- google-apps-script - 用于在 forEach 循环中复制和粘贴先前 i 值的 Google Apps 脚本功能