在JavaFX场景生成器中执行大任务而不冻结
我对JavaFX非常陌生。我正在使用JavaFX和带有Netbeans IDE的场景生成器开发一个桌面应用程序 这是我的应用程序界面(我没有那么好的名声来展示屏幕截图)在JavaFX场景生成器中执行大任务而不冻结,java,multithreading,javafx,netbeans-8,scenebuilder,Java,Multithreading,Javafx,Netbeans 8,Scenebuilder,我对JavaFX非常陌生。我正在使用JavaFX和带有Netbeans IDE的场景生成器开发一个桌面应用程序 这是我的应用程序界面(我没有那么好的名声来展示屏幕截图) 一个名为“单击此处启用文本框”的复选框(位于复选框右侧) 一个文本框(默认情况下应禁用,如果用户单击/选中复选框,则应具有写入选项;即启用) 一个按钮名为“完成大任务”-此按钮执行主要任务,此任务相当长。(ssh连接完成,脚本从Java类调用到远程机器,该脚本调用另外两个SCRPT,最后完成,所有进程的日志记录在名为output
@FXML
Button btnDotheBigtask;
@FXML
Button btnShowLogs;
@FXML
TextArea txtShowLogs;
@FXML
TextField txtMyText;
@FXML
CheckBox clickHeretoEnableTextBox;
@FXML
public void btnDotheBigtaskClick(ActionEvent event) throws IOException {
//CreateRelease create = new CreateRelease();
MyClassImpl m = new MyClassImpl();
m.doTheWork();
}
@FXML
public void btnShowLogs(ActionEvent event) throws IOException {
}
@FXML
public void clickHeretoEnableTextBox(ActionEvent event) throws IOException {
}
@FXML
public void txtAreaShowLogs(ActionEvent event) throws IOException {
}
@FXML
public void txtMyText(ActionEvent event) throws IOException {
}
MyClassImpl.java来执行主任务[我已经使用SSHExecute 1.0 jar来建立ssh连接]
ConnBean cb = new ConnBean("RemoteServer", "user","password");
// Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
ssh = SSHExec.getInstance(cb);
//Connect to server
ssh.connect();
CustomTask sampleTask = new ExecCommand("/usr/Test/myscript.sh");
//Execution of main taks
Result rs = ssh.exec(sampleTask);
我想做的是:
有人能帮我用概念或代码来完成这个任务吗(代码会更容易理解) 我建议您在后台线程中运行长时间运行的任务,并仅在完成时显示结果。我不知道如何在MyClassImpl.java中设置控制器中的标签中的文本,因为我的线程将在MyClassImpl.java中完成另一件事2。如果我加入线程,UI将冻结,直到进程完成。所以不要加入,这会破坏拥有后台线程的目的。通过向GUI线程添加任务来更新标签,可以设置标签中的文本。下面是一个很好的帮助示例,但是如何从MyClassImpl.java设置标签文本,因为我不知道在MyClassImpl.java中运行此任务的执行时间。关于此问题有多个问题/答案(例如)。