Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查JComboBox是否具有默认值_Java_Swing_Validation_Jcombobox - Fatal编程技术网

Java 检查JComboBox是否具有默认值

Java 检查JComboBox是否具有默认值,java,swing,validation,jcombobox,Java,Swing,Validation,Jcombobox,编辑:由于术语“默认值”令人困惑,我将其更改为“initialvalue” 这是一个有趣的问题。我在网站上搜索答案,但没有找到 我正在用Java编写一个验证器类,我想验证的一件事是JComboBox是否有它的初始值 注意,我没有检查用户是否选择了值;仅当用户选择的值与初始值相同时 例如,假设选项为: Some Message Here Item 1 Item 2 Item 3 ……等等。“此处的某些消息”文本将是初始值,我将使用setSelectedIndex或setSelectedItem方

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

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

我正在用Java编写一个验证器类,我想验证的一件事是JComboBox是否有它的初始值

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

例如,假设选项为:

Some Message Here
Item 1
Item 2
Item 3
……等等。“此处的某些消息”文本将是初始值,我将使用setSelectedIndex或setSelectedItem方法使其成为初始值

问题是,一旦用户选择了另一个项目(比如,项目1),那么就不再有任何方法来告诉初始值应该是什么

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

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


有什么想法吗?

为了记录在案,我最后做了以下几点:

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

Validator.isDefault(myComboBox, myInitialIndex);
但是,我也重载了它,因此您可以简单地使用JComboBox调用它,索引将默认为0:

Validator.isDefault(myComboBox); // same as Validator.isDefault(myComboBox, 0);
我可能还会重载它,以便它将字符串作为第二个参数(并使用
getSelectedItem()
检查它)


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

将默认值存储在变量中,并检查所选值是否等于此变量中存储的值。我遗漏了什么吗?我不太明白你所说的“默认值”是什么意思——一个初始选择的值,它不包含在列表中?不管怎样,这就是我要做的,因为让用户选择任何需要的东西都是不友好的invalid@JBNizet:那么,你是说我应该将默认值(作为字符串或int)传递给验证方法本身?这是可以的,但是有这样的东西似乎要优雅得多:
Validator.isDefault(myComboBox)
ByImplements ItemListener您可以通过当前JVM传递布尔变量instance@kleopatra=组合框可以编辑,也可以不编辑。当您第一次看到JComboBox时,它最初会选择一个值。理想情况下,此方法将检查用户选择的值是否与其初始值相同。也许我只是习惯于使用JavaScript/HTML,在这里可以检查选择列表上的默认值。