Java JComboBox记住其他选择

Java JComboBox记住其他选择,java,swing,jtable,jcombobox,Java,Swing,Jtable,Jcombobox,我有一个JTable,在一列中,我为每一行都有一个JComboBox。我按下按钮时动态添加行。组合框中的选择将决定对该特定行执行的计算。为了参数起见,让我们假设组合框的选项是:选项1、选项2、选项3和选项4 我的问题如下: 假设我添加了2行,并从第1行的组合框中选择任意选项,当我在第2行的组合框中进行选择时,会勾选与第1行相同的选择。似乎有某种记忆。如何禁用此选项,使默认选择始终为-1(即未选择任何选项)?我想完全控制这一切 下面是一段仅考虑选项1的代码示例: String labels[] =

我有一个JTable,在一列中,我为每一行都有一个JComboBox。我按下按钮时动态添加行。组合框中的选择将决定对该特定行执行的计算。为了参数起见,让我们假设组合框的选项是:选项1、选项2、选项3和选项4

我的问题如下:

假设我添加了2行,并从第1行的组合框中选择任意选项,当我在第2行的组合框中进行选择时,会勾选与第1行相同的选择。似乎有某种记忆。如何禁用此选项,使默认选择始终为-1(即未选择任何选项)?我想完全控制这一切

下面是一段仅考虑选项1的代码示例:

String labels[] = {"Option 1", "Option 2", "Option 3", "Option4"};
        JComboBox comboBox = new JComboBox(labels);
        comboBox.setSelectedIndex(-1);


        ItemListener itemListener = new ItemListener() {
        public void itemStateChanged(ItemEvent itemEvent) {
        int state = itemEvent.getStateChange();
        ItemSelectable is = itemEvent.getItemSelectable();

        if (selectedString(is) == "Option 1" & state == ItemEvent.SELECTED){


            System.out.println("A");    

        }

        }

        };  

    comboBox.addItemListener(itemListener);
非常感谢您的时间和帮助:)

首先,在比较字符串时不要使用“==”。相反,您应该使用
equals(…)
方法:

if (someString.equals(anotherString))
    // do something
然而,这并不是问题的原因

您将JComboBox错误地用于JTable。您不应该使用ItemListener(或任何侦听器)

组合框只是用作表的编辑器。这意味着,当您从组合框中选择一个值时,表的
TableModel
将更新。因此,如果您有基于所选值的自定义逻辑,则需要覆盖
表格模型的
setValueAt(…)
方法

@Override
public void setValueAt(Object value, int row, int column)
{
    super.setValueAt(value, row, column);

    //  add your custom logic here
}
如何禁用此选项,使默认选择始终为-1

组合框中显示的值取自
表格模型
。因此,如果将默认值设置为null,则在开始编辑时组合框将不会有选择


有关更多信息和工作示例,请阅读上Swing教程的部分。将教程链接放在手边,以便将来参考Swing基础知识。

很抱歉,代码什么都没说…,为了更好地获得帮助,请尽快发布一个SSCCE/MCVE,简短,可运行,可编译,带有本地变量的JTable/xxxttablemodel的硬编码值感谢您为我指明了正确的方向。非常感谢!