繁体   English   中英

Java SWT更新文本控件

[英]Java SWT Update Text control

我从1996年开始写了很多java代码,但从未尝试过SWT。 我虽然从一开始就选择了一些非常简单的东西,但是我很早就陷入了困境,即使我面前有几本SWT / Jface / RCP书籍也无法解决我的问题。

我试图在SWT窗口中运行命令行应用程序。 它不需要来自用户的任何类型的输入,它只需要显示sysout。 该应用程序很少生成超过30行的sysout。

public class TestGui implements Runnable {

private Display display;
private Shell shell;
private Text text;

public void run() {
    display = new Display();
    shell = new Shell(display, SWT.DIALOG_TRIM);
    shell.setText("SWT Test");
    shell.setSize(new Point(800, 400));
    shell.setLayout(new FillLayout());
    text = new Text(shell, SWT.MULTI | SWT.V_SCROLL | SWT.READ_ONLY);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
}

void addMessage(String s) {
    text.append(s);
    text.append("\n");
}

void close() {
    display.dispose();
}

public static void main(String[] args) {
    TestGui pr = new TestGui();
    pr.run();
    pr.addMessage("add some text");
    pr.close();
}
 }

我跑了这个,我看到窗口的光标闪烁着令人安心,但没有其他任何东西出现在它里面。 在关闭窗口之前,我似乎无法调用addMessage()方法,当然,Shell会被释放,所以我得到了一个例外。

我确定我错过了一个关键步骤......

谢谢

克里斯

问题是, while在循环run方式等待 ,直到显示实际配置 ,所以这样的run方法只能显示完成配置。

我不是SWT的专家,但尝试移动while循环到你的main方法,或呼叫(一个或多个)移动addMessage到您的run方法。 无论您采用何种方式,都必须等待处理帧之前添加消息。

我发布的原始示例中的问题是,回复中指出,添加消息的代码永远不会被执行。 所以我分离出一个单独的线程并从那里调用消息。 我仍在努力,当我有时间让它全部正常工作时,我会发布一个刷新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM