我非常习惯在NetBeans中使用Swing设计器,但我想我会尝试新的东西。我在Eclipse中使用SWT设计师非常新,所以我还在学习。
我试图创建一个Dialog
,它应该是ApplicationWindow
的模态。 GUI设计器显示标题栏(带有窗口标题,关闭/最小化按钮等),但是当对话框在运行时打开时,标题栏已完全消失。
我错过了什么吗?我试图在JDialog
之上创建等效于模态JFrame
。我还没有找到任何实质性的东西。
编辑:我发现了样式SWT.DEFAULT
,它使模态对话框'#34;向下滑动"在父窗口前面(我在Mac上),这肯定比没有标题栏的不可移动的单独窗口更好,但是如果有人能提供更多非常有用的信息。
答案 0 :(得分:0)
我无法使用SWT Designer,因为我从未使用它,但我可以提供代码段。
我建议你看一下创建一个扩展JFace Dialog
抽象类的类。
您可以使用setShellStyle(int)
方法更改样式,特别是使用模式样式位,例如SWT.APPLICATION_MODAL
或SWT.PRIMARY_MODAL
。如果您希望Dialog
对应用程序中的所有窗口都是模态的,请使用SWT.APPLICATION_MODAL
,或者如果您希望它只是父级的模态,请使用SWT.PRIMARY_MODAL
。
例如:
public class ModalDialog extends Dialog {
public ModalDialog(final Shell parentShell) {
super(parentShell);
// SWT.APPLICATION_MODAL or SWT.PRIMARY_MODAL depending on needs
setShellStyle(SWT.APPLICATION_MODAL | SWT.TITLE | SWT.BORDER | SWT.CLOSE);
}
}
您可以根据您要查找的内容添加/删除样式位(以及按钮,标题,内容等),但这样可以为您提供最小的Dialog
应用程序:
完整示例:
public class ModalDialogTest {
public static class ModalDialog extends Dialog {
/**
* @param parentShell
*/
public ModalDialog(final Shell parentShell) {
super(parentShell);
setShellStyle(SWT.APPLICATION_MODAL | SWT.TITLE | SWT.BORDER | SWT.CLOSE);
}
}
private final Display display;
private final Shell shell;
public ModalDialogTest() {
display = new Display();
shell = new Shell(display);
shell.setLayout(new FillLayout());
final ApplicationWindow applicationWindow = new ApplicationWindow(shell);
applicationWindow.open();
final Button button = new Button(shell, SWT.PUSH);
button.setText("Open modal dialog");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
// Create the modal Dialog on the ApplicationWindow
new ModalDialog(applicationWindow.getShell()).open();
}
});
}
public void run() {
shell.setSize(200, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(final String... args) {
new ModalDialogTest().run();
}
}