我是JavaFX的新手。我正在使用JavaFX和使用Netbeans IDE的场景构建器开发桌面应用程序。
这是我的应用程序用户界面(我没有显示屏幕截图的声誉)。
一个名为&#34的复选框;点击此处启用文本框" (显示在复选框的右侧)
一个文本框(默认情况下应禁用此选项,如果用户单击/选中复选框,则应具有写入选项;即启用)
一个按钮名称"做大任务" - 此按钮执行主要任务,此任务很长。 (ssh连接已完成,脚本从Java类调用到远程机器,此脚本调用另外两个scrpts并最终完成,所有进程的日志都记录在名为output.log的文件中)
另一个名为&#34的按钮;显示日志" (意图是显示output.log live [执行时写入]),然后是一个大文本字段(应显示日志)
和进度条(将显示从script1到脚本n进度的调用)
以下是我的FXMLDocumentController.java类:
@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);
我想做的是:
基本上我已经执行了很多任务来实现这个并检查我失败的地方
大任务顺利执行(因为我使用了java标准线程)但未能显示日志,当我点击show log按钮时UI被冻结。 (在showLogs上我已经阅读了日志文件并试图在文本中打印)
我无法在控制器类中出现的标签中显示/设置来自不同类(MyClassImpl)的工作已完成/已启动的消息。
任何人都可以帮助我完成这项任务的概念或代码(代码将更容易理解)。