我建議創建沒有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組件。當然,這不會使你的評論的其餘部分不真實:) –