创建一个新的 SWT 程序

创建一个名为 HelloWorld.java 的新文本文件并将其粘贴到其中:

import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class HelloWorld
{
    public static void main(String[] args)
    {
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());

        Label label = new Label(shell, SWT.NONE);
        label.setText("Hello World!");

        shell.pack();
        shell.open();

        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

当你启动程序时,它看起来像这样:

StackOverflow 文档

仔细看看 Hello World 应用程序

Hello World 应用程序包含 HelloWorld 类定义和 main 方法。

主要方法定义了 DisplayShell 。显示器充当 SWT 和底层操作系统之间的接口。它以 SWT 事件循环的形式处理平台事件模型。shell 表示桌面或窗口管理器的单个窗口。

通过在窗口小部件的构造函数中指定 shell,将窗口小部件添加到 shell。在这个例子中,我们创建了一个 Label 。标签是可以显示文本或图像的小部件。在这种情况下,我们设置文本 Hello World! 它。通过将 shell 指定为构造函数中的第一个参数,将小部件添加到 shell 中。

要使标签在 shell 中可见,我们必须为其设置固定大小,或者我们需要告诉其父(shell)如何布置其子项。

FillLayout 是最简单的 SWT Layout 。它将所有子项组织在一行或一列中,并强制它们具有相同的大小。

以下行告诉 shell 应用其布局并变为可见:

shell.pack();
shell.open();

最后但最重要的是,我们需要定义 SWT 程序的事件循环。需要事件循环来将用户输入事件从底层操作系统小部件传输到 SWT 事件系统。

while (!shell.isDisposed())
{
    if (!display.readAndDispatch())
        display.sleep();
}
display.dispose();

此循环将一直运行,直到释放 shell。一旦发生这种情况,显示器也会被丢弃,程序将终止。当程序循环时,它将读取下一个操作系统事件并将其传输到 SWT。如果没有事件,则线程将休眠直到下一个事件到达。