如何让多个jComboBox具有相同的项目,但选择一个项目使该项目在所有其他jComboBox中消失?

时间:2012-10-18 22:43:54

标签: java swing dynamic jcombobox

所以,这就是问题:我需要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());
        }
    }

3 个答案:

答案 0 :(得分:1)

为每个组合框添加itemListener,当您从组合框1中选择项目时,它将触发侦听器,您可以检索所选的值。从那里你可以从其他组合框中删除相同的项目。

答案 1 :(得分:1)

您可以从使用combo1中的选择的example获得一些想法,以确定在combo2中显示哪些模型。

答案 2 :(得分:0)

我将介绍一个了解所有组合框的自定义组合框模型。模型项应该引用选择它的组合框(当然,引用可以为null)。

然后我会创建一个包含父组合框的包装器模型。 getSize()和getElementAt()应该将源模型元素的引用与包装器模型的父引用进行比较。如果它是相同的跳过元素。