JComboBox项目更改

Mil*_*lin 1 java swing jcombobox

我的JComboBox模型包含了诸如项目item1,item2,item1.我的问题是当我选择第三项(item1)JComboBox并检查getSelectedIndex()它总是返回0.

如果我的模型中的项目相同,我如何获得不同的每个项目的索引?喜欢:

  • item1返回0
  • 第2项返回1
  • item1返回2

Har*_*Joy 6

它返回index = 0.因为该方法getSelectedIndex()使用.equalsJComboBox中的对象并将其与选定的对象进行比较.在你的情况下,因为item1也在索引0,它找到条件为真并返回0.如果你想获得不同的索引,那么你必须覆盖该getSelectedIndex()方法.

getSelectedIndex()Java2s上找到的JComboBox 的默认方法概述:

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;
    }
Run Code Online (Sandbox Code Playgroud)

如果项目对象有一个名称或其他任何东西,你应该在2个条目中有一些东西[可能是itemName],以获得所需的结果.覆盖getSelectedIndex()并比较所有意味着不同的东西.如果两个条目完全相同,那么将它添加两次是什么意思?