簡體   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