有没有办法删除 SWTShell
边框并支持窗口重新定位。我SWT.NONE
在我的 Shell 样式中使用了删除窗口边框,但它也最终锁定了 UI 位置。
问问题
1233 次
1 回答
2
是的,您可以,但您必须自己处理拖动事件。这是一个例子:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP);
Listener l = new Listener()
{
Point origin;
public void handleEvent(Event e)
{
switch (e.type)
{
case SWT.MouseDown:
origin = new Point(e.x, e.y);
break;
case SWT.MouseUp:
origin = null;
break;
case SWT.MouseMove:
if (origin != null)
{
Point p = display.map(shell, null, e.x, e.y);
shell.setLocation(p.x - origin.x, p.y - origin.y);
}
break;
}
}
};
shell.addListener(SWT.MouseDown, l);
shell.addListener(SWT.MouseUp, l);
shell.addListener(SWT.MouseMove, l);
shell.setSize(400, 300);
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
不值得张贴截图,因为它只是一个可拖动的灰色窗口。
更新
如果您希望整体Shell
可拖动,即使它包含其他小部件,请改用它:
display.addFilter(SWT.MouseDown, l);
display.addFilter(SWT.MouseUp, l);
display.addFilter(SWT.MouseMove, l);
于 2014-04-17T09:03:48.900 回答