创建一个新的 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 方法。

主要方法定义了 Display 和 Shell 。显示器充当 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。如果没有事件,则线程将休眠直到下一个事件到达。