检查JComboBox是否具有默认值

时间:2011-11-09 15:18:52

标签: java swing validation jcombobox

编辑:由于术语“默认值”令人困惑,我将其更改为“初始值。”

这是一个有趣的问题。我在网站上搜索了一个答案,但没有找到答案。

我正在用Java编写验证器类,我要验证的一件事是JComboBox是否具有初始值。

注意,我检查用户是否选择了值;仅仅是用户选择的值与初始值相同。

例如,假设选项是:

Some Message Here
Item 1
Item 2
Item 3

...等。 “Some Message Here”文本将是初始值,我会使用setSelectedIndex或setSelectedItem方法来实现。

问题是,一旦用户选择了另一个项目(例如,项目1),那么就没有任何方法可以判断初始值应该是什么。

我不能只检查一个“幻数”(比如说,if (cb.getSelectedIndex() == 0))因为验证器类无法知道索引0处的值是否实际上是初始值应该是。 (例如,它可能不在美国各州的名单中。)

我也不能使用任何事件监听器。考虑用户选择“项目1”的情况,然后重新选择“此处的一些消息”。我希望这会失败验证。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

为了记录,这是我最终做的事情:

我接受了JB Nizet的建议,让编码器将初始值传递给静态验证器类,例如:

Validator.isDefault(myComboBox, myInitialIndex);

但是,我也重载了它,你只需用JComboBox调用它,索引默认为0:

Validator.isDefault(myComboBox); // same as Validator.isDefault(myComboBox, 0);

我可能也会重载它,以便它将String作为第二个参数(并使用getSelectedItem()进行检查)。

如果有更好的方法,我不知道它会是什么。