Я на главной теме. При выборе элемента из меню необходимо вызвать базу данных, прежде чем gui сможет отобразить новую панель. Это занимает некоторое время. За это время я хочу показать курсор ожидания. Я нашел способ, но код выглядит уродливым. Как это можно сделать более элегантно? Этот вопрос отличается от других, потому что долго работающая задача работает на gui.JavaFX сменяет курсор во время ожидания изменения gui
menuitem.setOnAction(event -> { szene.setCursor(Cursor.WAIT);
Task<Void> task = new Task<Void>()
{
@Override
public Void call() throws Exception
{
Platform.runLater(new Runnable()
{
@Override
public void run()
{
// do some stuff
szene.setCursor(Cursor.DEFAULT);
}
});
return null;
};
};
new Thread(task).start();
});
Собирает всю 'Task' логики внутри' Platform.runLater' побеждает всю цель использования 'Task', так как логика будет работать в потоке пользовательского интерфейса , блокируя обновления (включая изменения курсора). – Itai
Таким образом, курсор изменится на состояние ожидания и обратно. Код работает, но он уродлив. –
Долгосрочная задача - обновление пользовательского интерфейса, поэтому корректно запускать его в потоке пользовательского интерфейса. Я нашел другой вопрос: http://stackoverflow.com/questions/27309642/javafx-updating-ui-from-a-thread-without-direct-calling-platform-runlater Возможно, мое решение является правильным. –