如何在继续之前确保 UI 更新
How to make sure UI updates before continuing
我是 JavaFX 的新手,我有一个启动按钮 object 并用它执行一些方法。问题是 UI 直到 object 执行这些方法后才更新。当我单击按钮时,GUI 没有响应(它在标题栏中显示“(未响应)”。方法完成后,UI 更新。我唯一能做的请参阅修复此问题等待 UI 更新然后执行方法。还有其他方法吗?我该如何解决此问题?
Object myObj;
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
/* some ui updates */
myLabel.setText("something");
try {
/* try initiating object and doing some methods with them */
myObj = new Object();
myObj.doMethod();
您必须为耗时方法创建一个新线程:
(我也在用 lambda 表达式重写你的代码... Java8 风格 ;))
Object myObj;
btn.setOnAction((ActionEvent event)->{
/* some ui updates */
myLabel.setText("something");
try {
/* try initiating object and doing some methods with them */
Runnable timeConsumingTask = ()-> {
myObj = new Object();
myObj.doMethod();
}
Thread thread = new Thread(timeConsumingTask);
thread.start();
我是 JavaFX 的新手,我有一个启动按钮 object 并用它执行一些方法。问题是 UI 直到 object 执行这些方法后才更新。当我单击按钮时,GUI 没有响应(它在标题栏中显示“(未响应)”。方法完成后,UI 更新。我唯一能做的请参阅修复此问题等待 UI 更新然后执行方法。还有其他方法吗?我该如何解决此问题?
Object myObj;
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
/* some ui updates */
myLabel.setText("something");
try {
/* try initiating object and doing some methods with them */
myObj = new Object();
myObj.doMethod();
您必须为耗时方法创建一个新线程: (我也在用 lambda 表达式重写你的代码... Java8 风格 ;))
Object myObj;
btn.setOnAction((ActionEvent event)->{
/* some ui updates */
myLabel.setText("something");
try {
/* try initiating object and doing some methods with them */
Runnable timeConsumingTask = ()-> {
myObj = new Object();
myObj.doMethod();
}
Thread thread = new Thread(timeConsumingTask);
thread.start();