我的 JComboBox
模型包含 item1
、item2
、item1
等项目。我的问题是当我在 JComboBox
中选择第三项 (item1
) 并检查 getSelectedIndex()
它总是返回 0。
如果我的模型中的项目相同,我如何才能以不同方式获取每个项目的索引?喜欢:
- item1 返回 0
- 项目 2 返回 1
- item1 返回 2
最佳答案
它返回 index = 0。因为 getSelectedIndex()
方法对 JComboBox 中的对象使用 .equals
并将其与选定的对象进行比较。在您的情况下,因为 item1 也在索引 0 处,它发现条件为真并返回 0。如果您想获得不同的索引,则必须覆盖 getSelectedIndex()
方法。
JComboBox 的默认 getSelectedIndex()
方法概要,位于 Java2s :
public int getSelectedIndex() {
Object sObject = dataModel.getSelectedItem();
int i, c;
Object obj;
for (i = 0, c = dataModel.getSize(); i < c; i++) {
obj = dataModel.getElementAt(i);
if (obj != null && obj.equals(sObject))
return i;
}
return -1;
}
您应该在 2 个条目中有一些不同的东西 [如果项目对象有名称或其他任何东西,则可能是 itemName] 以获得所需的结果。覆盖 getSelectedIndex()
并比较所有应该不同的东西。如果两个条目完全相同,那么添加两次有什么意义?
关于swing - JComboBox 项目更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6438374/