【问题标题】:Extending JFX ComboBox UI for MultipleSelectionModel为 MultipleSelectionModel 扩展 JFX ComboBox UI
【发布时间】:2015-04-15 16:20:57
【问题描述】:

我想为 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。

【问题讨论】:

    标签: java user-interface combobox javafx


    【解决方案1】:

    来源的标准位置是here

    我不明白第一个问题:“ComboBox 创建要打印的列表元素”。这是什么意思?

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

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

    【讨论】:

    • 对于 1:我的意思是通过接收显示事件为列表及其元素创建 UI 的方法。我只是想找到下拉列表的 UI 是在哪里构建的。
    • 好的,所以我想我在回答中提到了这个问题; ListView 内置于 ComboBoxListViewSkin
    • 当然,很好的答案,非常感谢! (会投票给你,但我没有足够的声誉)
    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2011-02-24
    • 2016-09-14
    相关资源
    最近更新 更多