Как повторно использовать / редактировать объект группы, уже добавленный в сцену на JavaFX - PullRequest
2 голосов
/ 19 марта 2012

Я начинаю с JavaFX и застрял на проблеме производительности. Я попытаюсь объяснить, а не вставлять код, потому что он слишком длинный и не централизован.

Я запустил приложение, вызвал метод запуска и получил объект Stage. До сих пор все в порядке.

Теперь я начинаю создавать свою структуру с группами. Я создал свою первую группу (назовем ее 'A') и установил ее с помощью setRoot () в рабочей области. Затем создайте 3 другие группы (каждая со сложной структурой листьев) и добавьте каждую из них в качестве дочерней для первой группы (той, которую мы называем «A»).

Проблема: я хотел бы обновить только одну из групповых структур, не делая их все, и снова вызвать setRoot () для объекта Stage. - Но если я попытаюсь удалить его из родительского, я получу исключение "java.lang.IllegalStateException: не в потоке приложения FX;". - Если я попытаюсь поместить его в другую группу, я получу то же исключение.

Можно ли как-то использовать группу, которую я уже создал, или просто заменить группу, которую мне нужно переделать?

Я пытался объяснить, в большинстве случаев, мою проблему, но, поскольку английский не является моим естественным языком, я надеюсь, что вы понимаете;)

Заранее спасибо ...

1 Ответ

4 голосов
/ 19 марта 2012

Not on FX application thread; означает, что вы выполняете операции пользовательского интерфейса не в том потоке. Изменение пользовательского интерфейса должно происходить только в потоке пользовательского интерфейса (иначе как «поток приложения FX»), иначе было бы невозможно синхронизировать операции пользовательского интерфейса. Для этого используйте следующий код:

Platform.runLater(new Runnable() {
   public void run() {
       A.getChildren().clear(); // or whatever operation you need
   }
});

, где Platform равно javafx.application.Platform

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...