所以,这就是问题:我需要3个或更多jComboBoxes(都有相同的项目)彼此连接,这样当我在任何jComboBox中选择一个项目时,该项目将在所有其他jComboBox中消失。具体例子:扑克游戏结束了。现在我需要保存球员的位置。我有jComboBoxes(代表地方)填充了玩家的配置文件,我想确保只有一个配置文件可以在整个jComboBoxes中选择。我自己尝试了一些东西并且做到了这一点。正如你将看到的,它完全没用......
in MyItemListener:
if (jComboBox1 == evt.getSource())
{
if (jComboBox1.getSelectedIndex() > 0)
{
jComboBox2.removeItem(jComboBox1.getSelectedItem());
jComboBox3.removeItem(jComboBox1.getSelectedItem());
}
}
if (jComboBox2== evt.getSource())
{
if (jComboBox2.getSelectedIndex() > 0)
{
jComboBox1.removeItem(jComboBox2.getSelectedItem());
jComboBox3.removeItem(jComboBox2.getSelectedItem());
}
}
if (jComboBox3== evt.getSource())
{
if (jComboBox3.getSelectedIndex() > 0)
{
jComboBox1.removeItem(jComboBox3.getSelectedItem());
jComboBox2.removeItem(jComboBox3.getSelectedItem());
}
}
答案 0 :(得分:1)
为每个组合框添加itemListener
,当您从组合框1中选择项目时,它将触发侦听器,您可以检索所选的值。从那里你可以从其他组合框中删除相同的项目。
答案 1 :(得分:1)
您可以从使用combo1
中的选择的example获得一些想法,以确定在combo2
中显示哪些模型。
答案 2 :(得分:0)
我将介绍一个了解所有组合框的自定义组合框模型。模型项应该引用选择它的组合框(当然,引用可以为null)。
然后我会创建一个包含父组合框的包装器模型。 getSize()和getElementAt()应该将源模型元素的引用与包装器模型的父引用进行比较。如果它是相同的跳过元素。