Java 选择一个值时,仅在JComboBox中显示一个值

Java 选择一个值时,仅在JComboBox中显示一个值,java,swing,user-interface,jcombobox,Java,Swing,User Interface,Jcombobox,您好:)我需要帮助更改JTable中的JComboBox。我是GUI编程和Swing新手,无法解决这个问题:我必须更改JComboBox的行为 您可以在下图中看到组合框。如果选择了“Ja”,则只应选择“Nein”作为选项,反之亦然。如果按照默认设置“Nein”,也会很酷。代码是由上学期的一名学生编写的,我很难像必须的那样调整组合框 这是组合框初始化的代码段 optionsInteger = new JComboBox<String>(); optionsInteger.ad

您好:)我需要帮助更改
JTable
中的
JComboBox
。我是GUI编程和Swing新手,无法解决这个问题:我必须更改
JComboBox
的行为

您可以在下图中看到组合框。如果选择了“Ja”,则只应选择“Nein”作为选项,反之亦然。如果按照默认设置“Nein”,也会很酷。代码是由上学期的一名学生编写的,我很难像必须的那样调整组合框

这是组合框初始化的代码段

optionsInteger = new JComboBox<String>();
    optionsInteger.addItem("Ja");
    optionsInteger.addItem("Nein");
    optionsInteger.setSelectedItem(optionsInteger.getItemAt(0));
    optionsInteger.setSelectedIndex(1);
    optionsInteger.setName("optionsInteger");

非常感谢您的帮助。

在您的代码中,这一行

optionsInteger.setSelectedItem(optionsInteger.getItemAt(0));
将默认选择设置为第零个元素(Ja)。这条线

optionsInteger.setSelectedIndex(1);
将默认选择设置为第一个元素(Nein)

设置所选项目或所选索引。没有必要两者都做

默认情况下,JComboBox不会删除所选元素。如果删除了所选元素,所选元素将如何显示在JTable中


如果您真的想这样做,您必须创建自己版本的JComboBox

optionsInteger.setSelectedItem(optionsInteger.getItemAt(0));
将默认选择设置为第零个元素(Ja)。这条线

optionsInteger.setSelectedIndex(1);
将默认选择设置为第一个元素(Nein)

设置所选项目或所选索引。没有必要两者都做

默认情况下,JComboBox不会删除所选元素。如果删除了所选元素,所选元素将如何显示在JTable中

如果您真的想这样做,您必须创建自己版本的JComboBox

。如果选择了“Ja”,则只应选择“Nein”作为选项,反之亦然

因此,您需要两个独立的
ComboBoxModels
,一个包含“Nein”,另一个包含“Ja”。然后,当您开始编辑单元格时,检查当前值并使用包含其他值的模型

退房。此示例显示如何在编辑单元格时动态更改模型

如果按照默认设置“Nein”,也会很酷

这与编辑无关。将数据添加到模型时,只需将“Nein”添加到TableModel

。如果选择了“Ja”,则只应选择“Nein”作为选项,反之亦然

因此,您需要两个独立的
ComboBoxModels
,一个包含“Nein”,另一个包含“Ja”。然后,当您开始编辑单元格时,检查当前值并使用包含其他值的模型

退房。此示例显示如何在编辑单元格时动态更改模型

如果按照默认设置“Nein”,也会很酷



这与编辑无关。将数据添加到模型中时,您只需将“不”添加到表格模型中。

请查看Oracle教程中的工作代码示例-如何使用表格、部件组合框作为编辑器是否有问题?您确定要这样做吗?这是相当不寻常的行为。是的,我知道,但我的教授希望这样。也许最好用复选框替换组合框。但是,如果选中,复选框必须返回字符串“Ja”,如果未选中,则必须返回字符串“Nein”:/您可以更改
itemstener
中复选框的文本。你好@rdonuk谢谢你的回答。我想用一个textfield替换组合框,如果点击它,它的值会从“Ja”变为“Nein”,反之亦然。我如何在上面的代码上实现这一点?很抱歉这样问,但我必须在明天之前完成。请看Oracle教程中的工作代码示例-如何使用表、部件组合框作为编辑器-您确定要这样做吗?这是相当不寻常的行为。是的,我知道,但我的教授希望这样。也许最好用复选框替换组合框。但是,如果选中,复选框必须返回字符串“Ja”,如果未选中,则必须返回字符串“Nein”:/您可以更改
itemstener
中复选框的文本。你好@rdonuk谢谢你的回答。我想用一个textfield替换组合框,如果点击它,它的值会从“Ja”变为“Nein”,反之亦然。我如何在上面的代码上实现这一点?很抱歉这么问,但我必须在明天之前完成。谢谢你的回答:)。也许我可以用文本字段替换组合框。通过点击字段,它应该改变它的值。这可能吗?@Tolgi:是的,可以使用JTextField来显示所选的值。基本上,您正在再次创建JComboBox。只需使用JComboBox,不必担心所选项目会显示在列表中。用户希望在JComboBox的列表中看到选中的项。
如果选中的元素被删除,那么选中的元素将如何显示在JTable中-渲染器对编辑器一无所知,它只是从模型中获取数据并将其显示在表中,因此这不是问题。“Ja/Nein”选择(或任何只有两个选项的选择器)的常规是复选框或单选按钮,而不是组合框。@FredK Hi。谢谢你的回答。我试图用checbox替换组合框,但它没有显示在表上。嗨。谢谢你的回答:)。也许我可以用文本字段替换组合框。通过点击字段,它应该改变它的值。这可能吗?@Tolgi:是的,可以使用JTextField来显示所选的值。基本上,您正在再次创建JComboBox。只需使用JComboBox,不必担心所选项目会显示在列表中。用户希望在JComboBox的列表中看到所选项目。
如果删除所选元素,所选元素将如何显示在y中