gpt4 book ai didi

java - 自定义JFrame运动 "slipping"

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

最近,我一直在努力让我的 gui 看起来不错,其中一部分是实现我自己的标题栏、最大化按钮、最小化按钮等。

我在拖动时遇到问题,我希望能够通过单击 JFrame 中的任意位置来拖动 JFrame。

我尝试创建一个 mousemotionlistener 来处理它,但是当我使用它时它会滑动。正如我尝试将窗口拖动到某个位置,但它似乎跳过对 mouseDragged 的​​调用并尝试调用 mouseMoved 。

这是我的代码

public class MouseWindowDragManager implements MouseMotionListener{
private JFrame frame;
int prevPosX = -1;
int prevPosY = -1;

public MouseWindowDragManager(JFrame frame){
this.frame = frame;
}

@Override
public void mouseDragged(MouseEvent e) {
int newX = (frame.getLocation().x + (e.getXOnScreen() - prevPosX));
int newY = (frame.getLocation().y + (e.getYOnScreen() - prevPosY));
frame.setLocation(newX, newY);
prevPosX = e.getXOnScreen();
prevPosY = e.getYOnScreen();
}

@Override
public void mouseMoved(MouseEvent e) {
prevPosX = e.getXOnScreen();
prevPosY = e.getProperty("apple.awt.draggableWindowBackground", true);tYOnScreen();
}
}

最佳答案

Recently, I have been trying to make my gui's look good and part of it is implementing my own titlebar, maximize button, minimize button, etc.

哎呀,微软和苹果花费了数百万美元来开发用户可以使用的 GUI。他们听到这个会很失望:)

I want to be able to drag the JFrame by clicking anywhere in it.

查看Moving Windows一个允许您拖动窗口的类。示例代码展示了如何通过拖动自定义标题栏来使用该类。但是,如果您确实希望能够通过单击任意位置来拖动框架,那么您可以使用 ComponentMover 注册框架的根 Pane

关于java - 自定义JFrame运动 "slipping",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944715/

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