...
public ProgressBar loadProgressBar;
...
Task task = new Task<Void>()
{
@Override
public Void call()
{
Platform.runLater(()
->
{
Stage stage = new Stage();
Group root = new Group();
Scene scene = new Scene(root, 2000, 2000, Color.BLACK);
stage.setTitle("JavaFX Scene Graph Demo");
stage.setScene(scene);
stage.setMaximized(true);
// stage.show();
Label tempLbl = new Label();
double h=0;
root.getChildren().add(tempLbl);
tempLbl.setText("");
for (int i = 0; i < 10000000; i++)
{
tempLbl.setText(tempLbl.getText()+"asd");
root.applyCss();
root.layout();
w=w+tempLbl.getHeight();
updateProgress(i, 10000000);
}
});
return null;
}
};
loadProgressBar.progressProperty().bind(task.progressProperty());
new Thread(task).start();
Если удалить Platform.runLater tempLbl.getHeight() всегда равен 0. Если оставить Platform.runLater loadProgressBar не обновляется до тех пор, пока не достигнет 100%. Как этого избежать?JavaFX: новый UI нить
Можете ли вы хотя бы объяснить, что, по вашему мнению, должен делать этот код? –
Это упрощенная версия. Полная версия текста берется, разбивается на страницы в соответствии с шрифтом, высотой и длиной. Каждый раз, когда страница оказывается разной, в зависимости от настроек. Код просто должен принимать и считать. Но без торможения второго потока или как я этого не делал. – Artyom
Я понимаю, что это, вероятно, просто образец, но код совершенно не имеет смысла. Зачем создавать что-то для работы в фоновом потоке, который просто поворачивается и выполняет все это на потоке приложения FX? –