Я пытаюсь реализовать MultipleSelectionModel для GridView ControlsFX. Изучая интернет, Джонатан Джайлс отметил, что для добавления слушателей в каждый GridCell было добавлено a bad idea. Это заставило меня задаться вопросом, как уведомить модель выбора событий, такую выборку, отбор и т. Д. Прежде чем читать это, я подумал, что узел, используемый в GridCell, будет потреблять событие мыши/касания/клавиши и использовать метод GridCells Selected соответственно. Мой вопрос здесь в том, что это обновление распространяется на любые слушатели/модели вообще или мне нужно связать его (где-то) вручную, что я не знаю, как это сделать в данный момент.Правильный способ реализации JavaFX 'SelectionModel для представления, у которого его нет
Кроме того, в моделях выбора используется наблюдаемый список только для чтения, что ставит еще одну проблему с тем, как привязать данные GridView (то есть список элементов) к списку модели выбора, который, как я полагаю, является тем, что использует модель для своих процессов ,
Я мог бы вообще обойти с использованием модели выбора и перехватить входные события на уровне Cell/Node и делать такие вещи, как подсветка в методе updateItem ячейки, при использовании Backerv ObservableList или 2 для отслеживания всего, и обновить соответственно, но это не лучший способ, а тем более хороший. Модель выбора для GridView должна быть единственным способом, поэтому я здесь.
Это действительно хороший ответ, Роланд, и то, что я тоже собирался сделать. Дело только в том, что поток, который я связал выше, дал мне паузу, потому что это исходит от одного из авторов ControlsFX, который также является большим вкладчиком OpenJDK и других крупных проектов. Я реализую GridView в элементе управления, где потенциальные пользователи сходят с ума от того, что собирают массивные изображения изображений в одном месте. Я бы хотел, чтобы я был самым результативным, и я не возражаю, если это тоже самое сложное. Я отвечу на ваш ответ, когда придет время, если ничего не придет. –
Ну, я использовал более 1000 узлов и до сих пор не получил проблемы с производительностью. Зависит от ваших требований. В качестве альтернативы вы можете поместить один прослушиватель в базовую панель и найти нужный узел, как только вы нажмете на панели. Но если ваши пользователи записывают много изображений, я думаю, вы могли бы столкнуться с проблемой памяти. – Roland
Это полезно знать. Спасибо :) 1000 - это всего лишь царапина на поверхности для пользователей, о которых я упоминал (и они просто не любят делить вещи в подпапки), но я знаю, что это можно смягчить, только создавая то, что можно увидеть на самом деле. Я действительно хочу использовать GridView, потому что его макет автоматически настраивается на измерение родителя, что экономит мне время на то, чтобы реализовать что-то свое, если только я не поставил вещи в жесткой (колоночной) схеме, как 1 в вашем решении. Было бы здорово услышать от команды ControlsFX, так как они сказали, что согласятся с представлениями для GridView с помощью sel. модель. –