Javafx - 从 java 类更新 UI 中的进度指示器
Posted
技术标签:
【中文标题】Javafx - 从 java 类更新 UI 中的进度指示器【英文标题】:Javafx - Update progress indicator in UI from java class 【发布时间】:2020-09-26 07:08:46 【问题描述】:以下是我在fxml中做的改动
java文件的变化,这里是我的代码:
private ProgressIndicator pi;
void handlebuildButtonAction(ActionEvent event) throws IOException, GeneralSecurityException
if ((entServer.isSelected()==true || compasServer.isSelected()==true))
if(!fileList.isEmpty())
ProgressIndicator pi = new ProgressIndicator();
pi.setProgress(10);
当我运行应用程序时,进度指示器没有更新。我不确定如何将更改同步到 UI。在这方面帮助我。提前致谢。
output
【问题讨论】:
错过的 fxml 更改例如:如果您设置 0.1 - 进度将是 10%、0.2 - 20% 等等,所以当您设置进度 => 1 时,您将始终“完成”。
这里是一个带有按钮的例子,当你点击按钮时,你的进度条会更新(点击一次+10%):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
public class Test extends Application
private ProgressIndicator pi;
private double counter = 0;
public void start(Stage stage)
ProgressIndicator pi = new ProgressIndicator();
Button button = new Button("Press");
TilePane root = new TilePane();
// action event
EventHandler<ActionEvent> event = new EventHandler<ActionEvent>()
public void handle(ActionEvent e)
counter += 0.1;
pi.setProgress(counter);
;
button.setOnAction(event);
root.getChildren().add(button);
root.getChildren().add(pi);
// create a scene
Scene scene = new Scene(root, 200, 200);
// set the scene
stage.setScene(scene);
stage.show();
public static void main(String args[])
// launch the application
launch(args);
只需根据您的情况更改此代码:
EventHandler<ActionEvent> event = new EventHandler<ActionEvent>()
public void handle(ActionEvent e)
if ((entServer.isSelected()==true || compasServer.isSelected()==true))
if (!fileList.isEmpty())
counter += 0.1;
pi.setProgress(counter);
;
希望对你有帮助!
【讨论】:
我试过了,但它不起作用。在附加的快照中,百分比仍然设置为 0。 带有按钮的程序示例可以正常工作,我刚刚检查过。但是如果您的程序不工作,请提供更多信息和代码示例。 FXML-我刚刚使用scenebuilder添加了一个进度指示器。 Controller.java - 我想逐步指示progressIndicator(完成几个任务)。但它没有得到更新。我不能有一个按钮,每次都按它来增加百分比。我希望它在每一步之后逐渐增加。 您需要将此代码放入线程中,例如,您在方法 void Start(Stage stage) 中看到事件处理程序的代码,其工作方式类似于 JavaFX 应用程序的线程。 首先提供你的程序代码。您的一段代码提供了一些信息以上是关于Javafx - 从 java 类更新 UI 中的进度指示器的主要内容,如果未能解决你的问题,请参考以下文章