2

所以,问题来了:我需要 3 个或更多 jComboBoxes(都具有相同的项目)相互连接,这样当我在任何 jComboBox 中选择一个项目时,该项目将在所有其他 jComboBoxes 中消失。具体例子:扑克游戏结束。现在我需要保存玩家的位置。我的 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());
        }
    }
4

3 回答 3

1

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

于 2012-10-19T06:20:31.013 回答
1

您可能会从这个示例中获得一些想法,该示例使用选择combo1来确定要显示在几个模型中的哪一个combo2

于 2012-10-19T12:00:03.100 回答
0

我将介绍一个了解所有组合框的自定义组合框模型。模型项应该有一个对它被选中的组合框的引用(当然引用可以是空的)。

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

于 2012-10-19T06:18:03.127 回答