powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX и обновления экрана
22 сообщений из 22, страница 1 из 1
JavaFX и обновления экрана
    #39029154
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например у меня идёт обработка данных, и я периодически делаю в цикле изменения прогрессбара
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    @FXML
    private ProgressBar progress;
...
    double size = cardFile.getList().size();
    double counter = 0;
    for(CardFileRecord cfr:cardFile.getList())
    {
        counter++;
        progress.progressProperty().set(counter/size);   
    }


Почему же я вижу только пустой прогресс-бар до начала, и полный в конце, а где ползущая полоска, как положено? Никак не могу найти где нужно рефреш дёргать.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029155
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, там довольно большой файл обрабатывается, просто я забыл внутри цикла многоточие поставить, что там до каунтера ещё много чего происходит.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029170
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаете класс, который будет обрабатывать данные, наследуетесь от Service и в нем вызываете метод progressUpdate.
Ну и на сам PB не забудьте bind повесить: %progressBar%.progressProperty().bind(%yourServiceClass%.progressProperty)
А вообще это все гуглится за 5 секунд.

XDiaBLoПочему же я вижу только пустой прогресс-бар до начала, и полный в конце
Потому что, если выполнять "обработку данных" в основном потоке, вся форма висит и ждет, когда эта обработка закончится.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029172
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunв нем вызываете метод progressUpdate.
updateProgress, извиняюсь.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029175
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, я уже так попробовал, нагуглил:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
void fillContractId(final CardFile cardFile) throws SQLException 
    {
        Connection conn = db.getConnection();
        final PreparedStatement ps = conn.prepareStatement("...");        
        Task<Integer> task = new Task<Integer>() 
        {
            @Override
            protected Integer call() throws Exception 
            {
                double size = cardFile.getList().size();
                double counter = 0;
                for(CardFileRecord cfr:cardFile.getList())
                {
                    ps.setString(1, cfr.getCardNumber());
                    ResultSet rs = ps.executeQuery();
                    if (rs.next())
                    {
                        cfr.setContractId(rs.getString(1));
                    }            
                    updateProgress(counter,size);
                    Thread.sleep(20);
                }
                return  0;
            }
        };
        progress.progressProperty().bind(task.progressProperty());
        new Thread(task).start();
        
    }


Тем не менее пока без толку.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029184
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу навскидку видно, что переменная counter у вас как задана 0, так нулю и равна :)
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029192
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunСразу навскидку видно, что переменная counter у вас как задана 0, так нулю и равна :)
Тьфу, и правда. Потерял пока переделывал, спасибо.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029197
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLo,

Потому что файл надо читать в фоновом потоке и из него правильно обновлять Event Dispatch Thread.
http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm

Иначе ты чтением файла занимаешь UI поток и ему некогда отрисовывать.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029200
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал на потоках, теперь один поток запускается до завершения другого, и всё поломалось, зато прогресс-бар работает. Нужно как-то теперь ловить завершение выполнения одной задачи, перед запуском другой.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029202
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczXDiaBLo,

Потому что файл надо читать в фоновом потоке и из него правильно обновлять Event Dispatch Thread.
http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm

Иначе ты чтением файла занимаешь UI поток и ему некогда отрисовывать.
Вот потоки моё слабое место, нужно про них туториал изучить внимательно.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029203
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLo Сделал на потоках, теперь один поток запускается до завершения другого, и всё поломалось, зато прогресс-бар работает. Нужно как-то теперь ловить завершение выполнения одной задачи, перед запуском другой.
Делаешь 2 класса, наследуешься от Service, там есть такое свойство, как setOnSucceeded() - оно срабатывает тогда, когда задача завершилась успешно. Туда и прописывай старт второй задачи.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029205
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunXDiaBLo Сделал на потоках, теперь один поток запускается до завершения другого, и всё поломалось, зато прогресс-бар работает. Нужно как-то теперь ловить завершение выполнения одной задачи, перед запуском другой.
Делаешь 2 класса, наследуешься от Service, там есть такое свойство, как setOnSucceeded() - оно срабатывает тогда, когда задача завершилась успешно. Туда и прописывай старт второй задачи.
А у Thread нет ничего подобного разве?
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029207
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
join вот вроде то что нужно.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029210
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLojoin вот вроде то что нужно.
Не, не то.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029214
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В javafx все делается намного проще, зачем городить что-то с Thread и join, вам же дали ссылку, изучайте или сами в интернетах ищите материалы по словам "concurrency javafx".
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029216
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аналога Application.ProcessMessages() нету что-ли?
Чтобы потоки не городить?
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029218
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunзачем городить что-то с Thread+1
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029220
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123аналога Application.ProcessMessages() нету что-ли?
Чтобы потоки не городить?
ups нету там такого. Архитектура другая. (fps)
http://habrahabr.ru/post/217269/
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029227
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korshunВ javafx все делается намного проще, зачем городить что-то с Thread и join, вам же дали ссылку, изучайте или сами в интернетах ищите материалы по словам "concurrency javafx".
Да у меня времени мало остаётся. Внутрь потока запихал вызов следующего потока, посмотрим что выйдет. Потом рефакторить, когда время будет. А сейчас дедлайн.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029229
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, вроде работает как-то. А нормально потом, лет через -цать. В общем как всегда.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39029230
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Ссылку потом почитаю.
...
Рейтинг: 0 / 0
JavaFX и обновления экрана
    #39032264
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, статью таки прочёл, и через Service сделал. Всё теперь как надо.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX и обновления экрана
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]