我是JavaFX的新手,我有一个启动和对象的按钮,并用它做一些方法。问题是UI在对象执行方法之后才会更新。当我单击按钮时,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();
答案 0 :(得分:1)
您必须为耗时的方法创建新线程: (我也用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();