以任何方式在JComboBox中刷新selectedItemReminder

时间:2013-08-05 01:41:41

标签: java swing jcombobox comboboxmodel

我有一个带有自定义模型的JComboBox,它扩展了DefaultComboBoxModel。

当我想在项目框中添加项目时,我将其添加到模型中并重新绘制JComboBox。但是,这将离开内部领域:

selectedItemReminder

不变。我该怎么办呢。

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你想要实现的目标,但我可能会想要修改方法以更多地阅读...

private void setChildren(Collection<BoundedArea> children) {
    int oldSize = getSize();
    // Notify the listeners that the all the values have begin removed
    fireIntervalRemoved(this, 0, oldSize - 1);
    this.children.clear();
    for (BoundedArea boundedArea : children) {
        if (boundedArea.getBoundedAreaType() == childType) {
            this.children.add(boundedArea);
        }
    }
    int size = getSize();
    // Notify the listeners that a bunch of new values have begin added...
    fireIntervalAdded(this, 0, size - 1);
    setSelectedItem(null);
}

我可以看到的另一个问题是,您似乎认为该列表基于1,而不是0基于0,即第一个元素是intervalAdded

根据问题的更改进行了更新

根据我的理解,contentsChanged的{​​{1}}和JComboBox检查组合框模型中的选定值是否已更改,如果有,则调用{{ 1}}激发适当的事件来表示所选项目的变化......

当您更改模型时,我会在您触发任何事件通知之前将当前选定的项目值设置为selectedItemChanged ...

所以,使用前面的例子,我会做更像......的事情。

null