2017-01-18 11 views
1

Мне нужно уточнить связь между Focus и Selection в javafx.scene.control.TreeTableView.JavaFX/TreeTableView: взаимосвязь между выбором и фокусом

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

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

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

Это оказалось правильным в 90% случаев. Во всяком случае, после некоторой случайной левого clickes моего кода производства такой картины:

enter image description here

Просьбы подтвердить:

  • Элемента с синим фоном выбранного элемента
  • Элемента с синимами border ist сфокусированный объект

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

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

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

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

ответ

1

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

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

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

0

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