自 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 已被释放,所以我得到了一个异常。
我确定我错过了一个关键步骤...
谢谢
克里斯