UI Control, такой как LISTVIEW или Tree или ... поставляется с наблюдаемой моделью.JAVAFX8 Обновление моделей управления?
Когда вы вносите изменения в эту модель, я полагаю, что javaFX знает, как обновить ее автоматически на дисплее.
Однако мой вопрос здесь заключается в следующем:
Является ли это намерение образом, что кто-то, кто хочет обновить и не заменить эту модель, сделать это в фоновом потоке с platform.runlater.
Другими словами, у вас есть серьезные вычисления, и в результате вам необходимо обновить ObservableList. Является ли это намеченным способом, чтобы выполнить тяжелую работу в фоновом потоке и, в конце концов, запустить обновление в платформе позже?
Я спрашиваю об этом, потому что это то, что я делал до сих пор без проблем. Но от моего чтения здесь и там, в частности, в
http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html
кажется, что какой-то другой механизм должен быть использован. Лучше всего вернуть полный список вместо обновления наблюдаемого списка.
Но это работает только в том случае, если что-то происходит из графического интерфейса. В случае, если обновление запускается с задней стороны, нет никакого способа сделать это.
Решение, которое я использовал до сих пор, всегда содержало ссылку на наблюдаемый список и обновлял его с помощью платформы. Runlater.
Есть ли другой способ?
Большое спасибо,
M
До сих пор для обновления с задней стороны у меня никогда не было проблем. Я просто warp obersableList в том, что я называю службой для этого объекта, и которые предоставляют метод, который вызывает платформу runlater. Хотя этот класс обслуживания предоставляет пакетный метод, например addAll, во избежание создания слишком большого количества runnables. Я проверю ваш пример – MaatDeamon
О, я вижу, это немного более сложное спасибо. Много хорошей идеи. В этом отношении я, хотя больше склонен использовать актеров. Несколько месяцев назад я спросил здесь, как интегрировать Akka и Javafx2. Решение становится проще после установки – MaatDeamon