我建议创建没有Trim的外壳就像这样:
new Shell (display, SWT.NO_TRIM);
这将创建一个没有标题栏的shell。随后,您可以创建自己的关闭/最小化/最大化按钮。
下面是一个例子,它生成了一个没有标题栏业务的独立进度条。
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
public class ProgressBarGui {
Display display;
Shell shell;
public static void main (String [] args) {
final Display display = new Display();
final Shell shell = new Shell (display, SWT.NO_TRIM);
//Something to put into shell.
shell.setLayout (new FormLayout());
ProgressBar proBar = new ProgressBar (shell, SWT.SMOOTH);
proBar.setSelection (50);
FormData progBarData = new FormData (100, 20);
progBarData.top = new FormAttachment (0);
progBarData.left = new FormAttachment (0);
proBar.setLayoutData (progBarData);
//recompute shell's size and position to fit widget.
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
// region.dispose();
display.dispose();
}
}
我的理解是,这将是几乎不可能用SWT这样做,因为SWT几乎是最具有平台无关的GUI工具,因此,最规范的方式。像Chrome这样的GUI需要与操作系统更直接的接口,因为它不使用标准的OS GUI元素。您将有效地需要编写自己的选项卡(可能是窗口)管理器。 – HalfBrian
@HalfBrian:实际上Swing是最不依赖平台的,因为它自己呈现所有组件,而SWT使用OS组件。当然,这不会使你的评论的其余部分不真实:) –