gpt4 book ai didi

java - JComboBox 记住其他选择

转载 作者:行者123 更新时间:2023-12-02 04:06:23 25 4
gpt4 key购买 nike

我有一个 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 就会更新。因此,如果您有基于所选值的自定义逻辑,则需要重写 TableModelsetValueAt(...) 方法。

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

// add your custom logic here
}

How can I disable this, so that the default selection is always -1

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

阅读 Swing 教程中关于 How to Use Tables 的部分了解更多信息和工作示例。请保留教程链接,以便将来引用 Swing 基础知识。

关于java - JComboBox 记住其他选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com