Изменение значений объекта во время выполнения - PullRequest
0 голосов
/ 04 мая 2019

Я довольно новичок в JavaFX и очень озадачен тем, как я могу обновлять объекты во время выполнения в JavaFX. В методе start() я могу изменять и создавать элементы сколько угодно, и они обновляются на месте. Однако, если я сделаю что-то подобное, это не сработает:

private static Circle circle;
public void start(Stage primaryStage) {
    Pane root = new Pane();
    Scene scene = new Scene(root, 600, 500);
    scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    primaryStage.setScene(scene);
    primaryStage.show();

    /*
     * Large main circle
     */
    circle = new Circle();
    circle.setRadius((scene.getHeight() + scene.getWidth()) / 8);
    circle.setStrokeWidth(5);
    circle.setTranslateX(100);
    circle.setTranslateY(100);

    circle.setStroke(javafx.scene.paint.Color.BLACK);
    root.getChildren().add(circle);
}
public static void main(String[] args) throws IOException {
    launch(args);
    circle.setStroke(javafx.scene.paint.Color.GREEN);
}

Здесь мы видим, что мы не можем просто изменить значения объекта вне метода start или stop и ожидать их изменения, и вы не можете вызывать launch(args) несколько раз.

Ранее я задавал вопрос, аналогичный этому, об изменении заголовка окна после его запуска. У меня ничего не получалось, но я подумал, что, возможно, я смогу запустить поток в методе start(), который устанавливает заголовок окна в строку, которую я могу изменить где угодно. Я бы сделал это так:

new Thread() {
    public void run() {
        while (true) {
            primaryStage.setTitle(windowTitleString);
        }
    }
}.start();

Это не сработало для меня, хотя. Должен быть какой-то способ изменить свойства объекта после запуска программы. Как я могу это сделать?

РЕДАКТИРОВАТЬ: Я нашел на Как я могу внешне обновить сцену JavaFX? , что я должен просто запустить весь свой код в функции start(), а не даже с помощью main() вообще (кроме запуска). Это решение, но это хорошая практика?

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