powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFx. обновление текста Label на форме, циклично
2 сообщений из 2, страница 1 из 1
JavaFx. обновление текста Label на форме, циклично
    #39395566
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Задача такая: есть простое приложение с JavaFx формой.
На форме SplitPane. На каждой половине есть Label по центру.
Как по клику (за старт работы формы взят клик по форме) запустить процесс ежесекундного обновления текста в Labelaх в одном потоке?

Нагуглил своеобразное решение - в ивенте setOnMouseClicked создать вспомогательную нить JavaFx приложения, которая обновит значения. Но вот беда в том, что я не знаю как в этой же нити обновить второй лейбл другим значением.

Вариант добавления нового треда не рассматриваю потому, что не хочется возиться с рассинхронизацией обновлений.


Код:
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
package AllClasses;

import javafx.application.*;
import javafx.concurrent.Task;
import javafx.geometry.Orientation;
import javafx.scene.*;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.stage.*;
import javafx.scene.layout.*;

import java.io.*;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;

public class Main extends Application {
    Map<String, Integer> dictionary = new HashMap<>();

    public static void main(String[] args) {
        launch(args);
    }

    public void init() {
        String filePath = "C:\\!work_folder\\new  8.txt";
        try {
            BufferedReader reader = new BufferedReader(new FileReader(filePath));
            int cnt = 0;
            while (reader.ready()) {
                String line = new String(reader.readLine().getBytes(), Charset.forName("UTF-8"));
                dictionary.put(line,cnt++);
            }
        } catch (FileNotFoundException e) {
            System.out.println("Не найден файл " + filePath);
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("Ошибка чтения файла " + filePath);
            e.printStackTrace();
        }
    }

    public void start(Stage myStage) {

        myStage.setTitle("JavaFXSkeleton.");


        SplitPane sp = new SplitPane();
        sp.setOrientation(Orientation.VERTICAL);
        Label labelUp = new Label("test");
        Label labelDw = new Label("тест");


        Scene scene = new Scene(sp, 800, 800);
        myStage.setScene(scene);

        final StackPane sp1 = new StackPane();
        sp1.getChildren().add(labelUp);
        final StackPane sp2 = new StackPane();
        sp2.getChildren().add(labelDw);

        sp.setOnMouseClicked(event -> {

            Task<Void> task = new Task<Void>() {
                @Override
                public Void call() throws Exception {
                    for (Map.Entry<String, Integer> pair : dictionary.entrySet()){
                        updateMessage(pair.getKey());
                        Thread.sleep(1000);
                    }
                    return null ;
                }
            };
            task.messageProperty().addListener((obs, oldMessage, newMessage) -> labelUp.setText(newMessage));
//в идеале нужно labelDw значением pair.value. 
//            task.messageProperty().addListener((obs, oldMessage, newMessage) -> labelDw.setText(newMessage)); 
            new Thread(task).start();
        });

        sp.getItems().addAll(sp1, sp2);
        sp.setDividerPositions(0.5f, 0.5f);

        myStage.show();
    }

}
...
Рейтинг: 0 / 0
JavaFx. обновление текста Label на форме, циклично
    #39395569
wolfio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл сказать - файл содержит просто любые слова в одну колонку, в тексте.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFx. обновление текста Label на форме, циклично
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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