如何设置SWT Dialog的位置?
How to set the location of SWT Dialog?
我有一个按钮。如果单击,将打开一个对话框。对话框总是出现在屏幕的中央,即使我想将它放在某个位置。
这是为什么?如何设置对话框的位置?
@Override
public void widgetSelected(SelectionEvent e) {
Dialog dialog = new MyDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "MyDialog");
dialog.open();
Point pt = ImageDisplayHelper.getDisplay().getCursorLocation();
System.out.println("location pt: "+pt); // pt is a valid location something like Point {1368, 220}
dialog.getShell().setLocation(pt); // no effect whatsoever
dialog.getShell().setLocation(10, 10); // no effect whatsoever
}
对话框open
方法显示对话框并等待它关闭。所以在调用 open
之后设置位置为时已晚。
改为调用dialog的create
方法,然后设置位置最后调用open
:
dialog.create();
... set location
dialog.open();
另一种方法是覆盖
protected Point getInitialLocation(Point initialSize)
对话框中的方法和return你想要的位置。
我有一个按钮。如果单击,将打开一个对话框。对话框总是出现在屏幕的中央,即使我想将它放在某个位置。
这是为什么?如何设置对话框的位置?
@Override
public void widgetSelected(SelectionEvent e) {
Dialog dialog = new MyDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "MyDialog");
dialog.open();
Point pt = ImageDisplayHelper.getDisplay().getCursorLocation();
System.out.println("location pt: "+pt); // pt is a valid location something like Point {1368, 220}
dialog.getShell().setLocation(pt); // no effect whatsoever
dialog.getShell().setLocation(10, 10); // no effect whatsoever
}
对话框open
方法显示对话框并等待它关闭。所以在调用 open
之后设置位置为时已晚。
改为调用dialog的create
方法,然后设置位置最后调用open
:
dialog.create();
... set location
dialog.open();
另一种方法是覆盖
protected Point getInitialLocation(Point initialSize)
对话框中的方法和return你想要的位置。