JavaFX/TreeTableView: связь между выбором и фокусом

Мне нужно пояснить отношения между Focus и Selection в javafx.scene.control.TreeTableView.

В моем коде я определил:

ttvMainTree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

Предположение 1: я предполагал, что сфокусированный элемент всегда является последним элементом с левым щелчком мыши. Также я предполагал, что щелчок левой кнопкой мыши всегда перемещает выделение. Так что в SelectionMode.SINGLE элемент в фокусе и выбранный элемент всегда идентичны.

Это казалось правильным в 90% всех ситуаций. Во всяком случае, после нескольких случайных щелчков левой кнопкой мыши мой код выдал такую ​​картинку:

введите здесь описание изображения

Любезно подтвердить:

  • Элемент с синим фоном является выбранным элементом
  • Элемент с синей рамкой находится в фокусе

Здесь сфокусированный элемент можно изменить, щелкнув левой кнопкой мыши, выделенный элемент, кажется, не зависит от щелчка левой кнопкой мыши.

Приносим извинения за то, что не предоставили SSCCE. На данный момент я не знаю, как сократить свой код и воспроизвести это поведение.

Поэтому общий вопрос:

  • Что не так с предположением 1?

person BerndGit    schedule 18.01.2017    source источник


Ответы (2)


По моему скромному мнению, я не думаю, что есть разница в поведении этих двух, это скорее отношения, как вы сказали, когда вы выбираете Node, этот запросит фокус. Фокусом можно управлять с помощью «focusTraversable»:

focusTraversable: указывает, должен ли этот узел быть частью цикла обхода фокуса. Когда это свойство имеет значение true, фокус можно перемещать на этот узел и с этого узла с помощью обычных клавиш обхода фокуса.

В вашем случае, я думаю, может быть, это потому, что вы выбрали TreeTableView, который является одновременно дочерним и родительским Child 2!

person Bo Halim    schedule 18.01.2017

Нашел причину странного поведения моего приложения: прослушиватель выбора вызвал обновление модели данных. В основном список с дочерними элементами был удален и снова заполнен теми же данными. Это вызвало путаницу в модели выбора.

person BerndGit    schedule 20.01.2017