Я пытаюсь создать программу, которая будет создавать новые круги с использованием javafx каждые три секунды. Но когда я запускаю свой цикл с thread.sleep(), мое графическое окно с кругами появляется, когда цикл завершен. Например, я хочу сделать 10 кругов. Мое графическое окно появится, когда будут сделаны все 10 кругов. Но я хочу, чтобы моя графика появлялась при создании первого круга. И в этом окне пропущенные круги появляются каждые три секунды.Создание кругов в javafx с thread.sleep()
@Override
public void start(Stage primaryStage) throws Exception
{
Pane pane = new Pane();
//pane.setStyle("-fx-fill: linear-gradient(orange,orangered,blue);");
pane.setPrefSize(1200,1000);
pane.getChildren().add(new MyCircle().getCircle());
for(int i=0; i<10; i++)
{
try
{
Thread.sleep(3000);
}catch(InterruptedException e){}
pane.getChildren().add(new MyCircle().getCircle());
}
Form f = new Form("This is hello world", pane);
}
Я сделал класс формы, которые имеют сцены, а также я сделал круг класса, которые дают мне мои круги с местоположением и стилем, который я хочу. В этой программе выше мой gui появляется, когда все круги сделаны.
Я не знаю javafx, но похоже, что вам нужно активировать цикл событий перед каждым сном. – totoro
Вы вызываете 'Thread.sleep' в потоке пользовательского интерфейса JavaFX, поэтому он зависает, не может обновить отображение. Я думаю, что эти два вопроса должны дать вам представление о том, как это сделать: [Обновить пользовательский интерфейс из рабочего потока] (http://stackoverflow.com/questions/20497845/constantly-update-ui-in-java-fx-worker -thread) и [Почему потоки блокируют обновления JavaFX UI] (http://stackoverflow.com/questions/33112560/why-is-a-thread-blocking-my-javafx-ui-thread) – Itai