0

我正在调用 plink 以使用来自 Java 的 ssh 在远程位置执行一个 shell 脚本。当我从 ssh 控制台取回缓冲数据时,我想将它们实时写入 JTextField 等(后端代码执行大约 10 分钟并不断生成一些字符串)。

在执行此操作时,执行会挂起,直到后端代码完全执行并立即显示所有输出。如果我这样做是为了直接 Eclipse 控制台,它会在执行时逐行写入。有什么建议么?

    //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);
            }
        }

谢谢,艾莉亚

4

1 回答 1

0

您应该将 ssh 放在后台线程中并从中更新 JTextArea。这样你就不会阻塞事件调度线程,即使后台(工作)线程没有终止,它也能够更新图形界面。

于 2013-07-30T12:41:44.803 回答