Как обновить элементы графического интерфейса JavaFX во время работы программы - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу видеть обновления моего графического интерфейса во время выполнения программы, а не ждать окончания события нажатия кнопки

public class MainController implements Initializable {
@FXML
private label label;

@Override
public void initialize(URL url, ResourceBundle rb) {
}

private void Event(ActionEvent event) {
    // start is a button
    if (event.getSource() == Start) {
      // calculations
      // updating label
      label.setText(" update me ");
      // other calculations
      // updating label for the second time
      label.setText(" update me ");
    }
  }
}

Это простой пример моего кода (javaFXML), обратите внимание, что вычисления и обновления являются более сложными, чем демонстрационный пример, и их выполнение занимает слишком много времени, поэтому я хочу просматривать обновления во время выполнения.

1 Ответ

0 голосов
/ 19 июля 2019

Вы должны знать и использовать концепцию потоков

Ваш код будет выглядеть следующим образом:

if (event.getSource() == Start) {

       new Thread(new Runnable() {
             @Override
             public void run() {
                 //do the calculations
                 System.out.println("calculations is finished");
             }
       }).start();

      // updating label
      label.setText(" update me ");

      new Thread(new Runnable() {
             @Override
             public void run() {
                 //do the other calculations
                 System.out.println("calculations is finished");
             }
       }).start();
      // updating label for the second time
      label.setText(" update me ");
    }

Но вы должны знать о проблемах синхронизации, которые могут возникнуть между вычислениями.Я рекомендую вам пройти этот курс: https://www.youtube.com/playlist?list=PLBB24CFB073F1048E

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