可用于开发 JVM 桌面应用的图形用户界面,提供跨平台支持,核心功能包括窗口组件、布局管理和事件处理,是 Eclipse 等知名应用的 GUI 基础库。【此简介由AI生成】
Translated by AI, submit an issue feedback
关于
SWT 是一个跨平台的 GUI 库,适用于基于 JVM 的桌面应用程序。 最著名的基于 SWT 的应用程序是 Eclipse。
快速开始
SWT 提供了平台特定的 jar 文件。 从 https://download.eclipse.org/eclipse/downloads/index.html 下载,并将 jar 文件添加到您的类路径中。
示例

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class HelloWorld {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Hello World");
shell.setLayout(new GridLayout(2, false));
final Label label = new Label(shell, SWT.LEFT);
label.setText("Your &Name:");
label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
final Text text = new Text(shell, SWT.BORDER | SWT.SINGLE);
final GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false);
data.minimumWidth = 120;
text.setLayoutData(data);
final Button button = new Button(shell, SWT.PUSH);
button.setText("Say Hello");
shell.setDefaultButton(button);
button.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false, 2, 1));
final Label output = new Label(shell, SWT.CENTER);
output.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
button.addListener(SWT.Selection, event -> {
String name = text.getText().trim();
if (name.length() == 0) {
name = "world";
}
output.setText("Hello " + name + "!");
});
shell.setSize(shell.computeSize(SWT.DEFAULT, SWT.DEFAULT));
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
首先,创建一个Display,它是所有GUI相关代码的核心枢纽。
接着,创建一个Shell,在本例中即顶层窗口。
随后构建所有子控件及其监听器,包括布局信息。
最终,我们根据子控件自动计算窗口尺寸并显示窗口。
while循环持续处理所有GUI事件,直至窗口关闭触发释放操作。
退出前需释放所有占用的GUI资源。
参与SWT开发
感谢您对本项目的关注。
通用Eclipse平台贡献指南请参阅:
https://github.com/eclipse-platform/.github/blob/main/CONTRIBUTING.md
开发者资源:
以下说明如何为SWT贡献功能或修复错误:
源代码管理、构建流程、编码规范等信息可通过以下链接获取:
贡献者许可协议:
提交贡献前,需签署Eclipse基金会贡献者许可协议(CLA):
联系渠道:
通过项目开发者邮件列表联系:
缺陷查询:
SWT历史开发问题记录于Bugzilla:
提交新缺陷:
可通过Github问题跟踪器提交缺陷和功能请求。我们始终欢迎贡献!
请注意本项目主要由志愿者维护。若您不自行提供实现方案(或委托他人实现),问题可能长期无法解决。对于严重缺陷,可能会有其他贡献者介入修复。