有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java自定义ComboxModel。如何正确触发事件?

我已经实现了自己的ComboBoxModel:

public class MyComboBoxModel extends AbstractListModel<MyType> 
                             implements ComboBoxModel<MyType> {}

现在我显然需要重写public void setSelectedItem(Object item),但文档中说:

The implementation of this method should notify all registered ListDataListeners that the contents have changed.

为此,我想我需要使用AbstractListModel.fireContentsChanged(Object, int, int)方法。JComboBox的问题是,可以设置所选项,而不必将其置于列表中,因此当调用setSelectedItem(Object)时,我不一定确定所讨论项的索引,因为它不需要位于基础模型中

我找到了另一个问题(https://stackoverflow.com/a/7077192)的答案,该问题在本例中使用了fireContentsChanged(item, -1, -1),但此人没有提供该部分代码的任何细节。现在我想知道,这是否是处理已更改的选定项目的正确方法

我应该始终使用-1作为两个索引吗?如果一个项目实际上在模型中,我应该尝试获取它的真实索引吗?还是我应该做些完全不同的事情


共 (0) 个答案