Java 将实时SSH控制台输出重定向到JFrame
我正在调用plink,以便使用来自Java的ssh在远程位置执行shell脚本。当我从ssh控制台取回缓冲数据时,我想将它们实时写入JTextField等(后端代码执行大约10分钟并不断生成一些字符串) 执行此操作时,执行将挂起,直到后端代码完全执行并一次显示所有输出。如果我对DirectEclipse控制台执行此操作,它将在执行时逐行写入。有什么建议吗Java 将实时SSH控制台输出重定向到JFrame,java,ssh,console,real-time,output,Java,Ssh,Console,Real Time,Output,我正在调用plink,以便使用来自Java的ssh在远程位置执行shell脚本。当我从ssh控制台取回缓冲数据时,我想将它们实时写入JTextField等(后端代码执行大约10分钟并不断生成一些字符串) 执行此操作时,执行将挂起,直到后端代码完全执行并一次显示所有输出。如果我对DirectEclipse控制台执行此操作,它将在执行时逐行写入。有什么建议吗 //JFrame Component public GUIApplicationConsoleFrame(String tit
//JFrame Component
public GUIApplicationConsoleFrame(String title) {
dispFrame = new JFrame(title);
opArea = new JTextArea("");
ipField = new JTextField();
// Writing Output, redirected to JTextArea
if (std.available () > 0) {
value = std.read ();
out((char) value);
while (true) {
value = std.read ();
out((char) value);
if (<terminating condition>)
if (++count==2)
break;
Thread.sleep(3);
}
}
//JFrame组件
公共GUI应用程序解决方案名称(字符串标题){
dispFrame=新JFrame(标题);
opArea=新的JTextArea(“”);
ipField=新的JTextField();
//写入输出,重定向到JTextArea
如果(标准可用()>0){
值=std.read();
输出((字符)值);
while(true){
值=std.read();
输出((字符)值);
如果()
如果(++计数==2)
打破
睡眠(3);
}
}
谢谢,
Arya您应该将ssh放在后台线程中,并从中更新JTextArea。这样您就不会阻止事件调度线程,并且即使后台(工作线程)线程未终止,它也能够更新图形界面