为MultipleSelectionModel扩展JFX ComboBox UI

时间:2015-02-14 19:59:29

标签: java user-interface combobox javafx

我想为Open Java FX 8实现一个MultipleSelectionModel ComboBox,其中包括ControlFX CheckComboBox的所有功能(如this post所示)以及超出此问题范围的其他补充功能

我的问题是我已经阅读JavaFX source几个小时了,我还没有找到哪种方法1. ComboBox创建要打印的元素列表(使用ListView和其他JFX UI元素) 2. ComboBox接收事件以显示列表并显示它。 你能帮我找到这些方法吗?

我已阅读以下课程:

javafx.scene.control.ComboBox,
javafx.scene.control.ComboBoxBase,
com.sun.javafx.scene.control.skin.ComboBoxBaseSkin,
com.sun.javafx.scene.control.behavior.ComboBoxBaseBehavior,
javafx.scene.control.Cell

和其他一些不相关的类,如MultipleSelectionModel。

我计划扩展ComboBoxBase以生成我的MultipleComboBox。我还没有能够确定ComboBoxBase是否可以支持MultipleSelectionModel。

1 个答案:

答案 0 :(得分:1)

来源的标准位置为here

我不理解第一个问题:" ComboBox创建要打印的列表元素"。这是什么意思?

对于2:ComboBoxBaseSkincomboBox' s showingProperty()注册一个监听器(这在构造函数中完成)。当属性发生变化时,handleControlPropertyChanged(...)方法会调用show()hide()。这些是抽象方法,在子类ComboBoxPopupControl中实现;该类中show()的实现基本上只调用保存列表视图的show(...)上的PopupControl。弹出窗口的内容(即列表视图)在子类ComboBoxListViewSkin中创建。

通过调用ComboBox的{​​{1}}方法来管理显示弹出窗口的实际触发器,这会导致show()属性设置为true,从而触发侦听器如上所述。这是通过isShowing方法完成的。