Я исследовал и попробовал несколько вещей:
- код в PrimaryStage.show() [посмотрите мой пример кода]
- primaryStage.setOnShown() или PrimaryStage. setOnShowing()
- Обработчик событий из сцены
- Обработчик событий из сцены
- Кнопка с обработчиком событий
В большинстве случаев наступает этап, затем программа выполняет смену цвета фона (без визуализации) и наконец появляется сцена с конечным результатом. Или вариант 2: ничего не вижу, код проходит и в конце сразу приходит конечный результат.
Вот мой код:
package sample;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
GridPane gridPane = new GridPane();
Rectangle[] recs = new Rectangle[10];
for (int i = 0; i < recs.length; i++) {
recs = new Rectangle(30, 30, Color.GREEN);
recs.setStroke(Color.BLACK);
gridPane.add(recs, i, 0);
}
primaryStage.setTitle("Code after primaryStage.show()");
primaryStage.setScene(new Scene(gridPane, 400, 300));
primaryStage.show();
for (Rectangle rec : recs) {
Thread.sleep(1000);
rec.setFill(Color.ORANGE);
}
}
public static void main(String[] args) {
launch(args);
}
}
Подробнее здесь: https://stackoverflow.com/questions/508 ... e-show-how
Мобильная версия