Не прогружаются ноды, добавленные в Task JavaFX

256
18 января 2018, 20:41

Добрый день. У меня идёт прогрузка сцены. Т.к. добавляется много элементов на AnchorPane, решил сделать добавление в отдельном потоке, чтобы на лету добавлялись... Пробовал Platform.runLater(). Всё работало, но хотел быстрее, и был ещё один минус, но это неважно. Гуглил и прочитал про Task. Сделал с Task. В итоге сейчас у меня элементы, а точнее кнопки, добавленные в Task'е, просто не отображаются, точнее отображаются, но максимум 1, иногда 2. Упрощённый код такой

public class Loader(){
    private AnchorPane anchorPane;
    loadComponents(){
        ObservableList<Node> children=anchorPane.getChildren();
        Task task=new Task(){
            @Override
            protected Void call()throws Exception{
                for(int i=0;i<75;i++){
                    Button button=new Button()
                    button.setPrefSize(100,100);
                    children.add(button);
                }
                return null;
            };
        Thread t = new Thread(task);
        t.start;
        }
    }
}
Answer 1

Ну в общем делать надо так

public class Loader(){
private AnchorPane anchorPane;
loadComponents(){
    ObservableList<Node> children=anchorPane.getChildren();
    Task task=new Task(){
        @Override
        protected Void call()throws Exception{
            for(int i=0;i<75;i++){
                Button button=new Button()
                button.setPrefSize(100,100);
                Platform.runLater(new Runnable () {
                  public void run() {
                    children.add(button);
                  }
                });
            }
            return null;
        };
    Thread t = new Thread(task);
    t.start;
    }
}
READ ALSO
Как изменить строку кода адаптера для соответствия фрагменту?

Как изменить строку кода адаптера для соответствия фрагменту?

У меня есть CursorAdapter для RecyclerView, написанный для активности, я решил перенести список в фрагмент, но не могу понять, как нужно изменить строку...

271
Можно ли использовать экран в Андроид полностью?

Можно ли использовать экран в Андроид полностью?

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

258
Вопрос о реализация чата

Вопрос о реализация чата

Есть простой чат на андроиде и сервер на ЯваСоеденение между ними происходит с помощью сокета

233
Java. Печать из Excel

Java. Печать из Excel

Суть задачи в следующем: Есть 2 xls-файлаВ первом содержится выборка данных из БД, а второй предназначен для ручного ввода данных из первого...

274