gpt4 book ai didi

java - 使用鼠标移动 shell 并调整其大小(自定义标题栏)

转载 作者:行者123 更新时间:2023-11-30 04:36:58 26 4
gpt4 key购买 nike

我想创建自定义标题栏,因此我必须编写允许用户调整大小和移动 shell 的代码(我正在使用 SWT),但我遇到了问题

a) 捕获鼠标抬起

b) 调整大小

    shell.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(final MouseEvent arg0) {
move=true;
oldx=arg0.x;
oldy=arg0.y;
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
while (move) {
shell.setLocation(MouseInfo.getPointerInfo().getLocation().x-oldx, MouseInfo.getPointerInfo().getLocation().y-oldy);
}
}

});
}
@Override
public void mouseUp(MouseEvent arg0) {
move=false;
}
});

移动外壳正在工作它不捕获鼠标释放事件。我也不知道如何调整大小。我已经尝试过了

shell.setSize(MouseInfo.getPointerInfo().getLocation().x-shell.getBounds().x, MouseInfo.getPointerInfo().getLocation().y-shell.getBounds().y);

但它不起作用。

最佳答案

您的问题是您期望在事件 #1 (mouseUp) 完成触发之前触发事件 #2 (mouseDown)。 SWT 一次处理一个事件。您需要触发#2 来完成#1 中的操作,但这永远不会发生,因为#2 不会运行。这是一个僵局的情况。您需要随着鼠标移动来移动窗口,而不是基于 mouseDown 事件。看看这个example .

关于java - 使用鼠标移动 shell 并调整其大小(自定义标题栏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255127/

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