我有一个带有自定义模型的JComboBox,它扩展了DefaultComboBoxModel。
当我想在项目框中添加项目时,我将其添加到模型中并重新绘制JComboBox。但是,这将离开内部领域:
selectedItemReminder
不变。我该怎么办呢。
答案 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