2015-02-14 1 views
0

Я хочу реализовать MultipleSelectionModel ComboBox для Open Java FX 8, который будет включать в себя все функции ControlFX CheckComboBox (как видно из this post) и другие дополнительные функции, выходящие за рамки этот вопрос.Расширение JFX ComboBox UI для MultipleSelectionModel

Моя проблема в том, что я читал через JavaFX source в течение нескольких часов, и мне еще предстоит найти, в каком методе 1. ComboBox создает список элементов для печати (используя ListView и другие элементы интерфейса JFX) и 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

Стандартное расположение источников: here.

Я не понимаю первый вопрос: «ComboBox создает элементы списка для печати». Что это значит?

Для 2: ComboBoxBaseSkin регистрируется слушатель с comboBoxshowingProperty() (это делается в конструкторе). Метод handleControlPropertyChanged(...) вызывает show() или hide() при изменении свойства. Это абстрактные методы, реализованные в подклассе ComboBoxPopupControl; реализация show() в этом классе в основном просто вызывает show(...) на PopupControl, который содержит вид списка. Содержимое всплывающего окна (т. Е. Списка) создается в подклассе ComboBoxListViewSkin.

Фактический триггер, чтобы показать всплывающее меню управляется с помощью вызова метода show()ComboBox «s, что заставляет isShowing свойство быть установлена ​​истина, вызывая слушателя, описанный выше. Это делается из метода ComboBoxBaseBehavior.

+0

Для 1: Под этим я подразумеваю метод, который создает пользовательский интерфейс для списка и его элементов, получая отображаемое событие. Я просто пытаюсь найти, где построен пользовательский интерфейс для раскрывающегося списка. –

+0

Итак, я думаю, что обратился к этому в ответ; ListView построен в ComboBoxListViewSkin –

+0

Определенно, отличный ответ, спасибо большое! (Проголосул бы за вас, но у меня недостаточно репутации) –