我必须执行一个复杂的过程来加载需要不同时间的图像,并且在此过程运行时,我想通知用户一个进程实际上正在后台运行。
为此,我已经放弃了一些动画,因为它实际上必须在不同线程的背景中,所以我想要的只是一个大红色文本,上面写着“正在加载......请稍候”。
简化示例:
主要:
public class Controller {
@FXML
StackPane mainPane;
Text text;
public void initialize(){
text = new Text();
text.setText("please wait");
text.setVisible(false);
mainPane.getChildren().add(text);
}
public void handleMouseClick(){
text.setVisible(true);
longProcess();
text.setVisible(false);
}
public void longProcess(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Fxml 文件:
<?import javafx.scene.layout.StackPane?>
<StackPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml"
fx:id="mainPane"
onMouseClicked="#handleMouseClick">
</StackPane>
因此,这段代码创建了一个简单的堆栈窗格并向其中添加了一个不可见的文本,然后在鼠标单击时它应该首先显示文本然后使线程休眠(类似于我的漫长过程)然后使文本再次不可见但它只是使线程休眠和由于某种原因不显示文本。
米脂
慕田峪9158850
相关分类