gpt4 book ai didi

java - 在 SWT UI 中删除窗口边框会禁用重新定位

转载 作者:行者123 更新时间:2023-12-02 05:55:32 25 4
gpt4 key购买 nike

有没有办法去除SWT Shell边框并支持窗口重新定位。我在 Shell 样式中使用了 SWT.NONE 来删除窗口边框,但最终也锁定了 UI 位置。

最佳答案

是的,你可以,但是你必须自己处理拖动事件。这是一个例子:

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);

关于java - 在 SWT UI 中删除窗口边框会禁用重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23126313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com