Java 自定义JFrame移动“;“打滑”;

Java 自定义JFrame移动“;“打滑”;,java,swing,jframe,awt,Java,Swing,Jframe,Awt,最近,我一直在努力使我的gui看起来不错,其中一部分是实现我自己的标题栏、最大化按钮、最小化按钮等 我在拖动上有问题,我希望能够通过单击JFrame中的任意位置来拖动它 我试图创建一个mousemotionlistener来处理它,但是当我使用它时它会滑倒。正如我尝试将窗口拖动到某个位置一样,它似乎跳过了对mouseDragged的调用,而尝试调用MouseModed 这是我的密码 public class MouseWindowDragManager implements MouseMotio

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

我在拖动上有问题,我希望能够通过单击JFrame中的任意位置来拖动它

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

这是我的密码

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();
    }
}
最近,我一直在努力使我的gui看起来不错,其中一部分是实现我自己的标题栏、最大化按钮、最小化按钮等

Gee、微软和苹果花费数百万美元开发用户可以使用的GUI。听到这个消息,他们会感到失望:)

我希望能够通过单击JFrame中的任意位置来拖动它


查看一个类,该类允许您拖动窗口。示例代码显示了如何通过在自定义标题栏上拖动来使用该类。但是,如果您确实希望通过单击任意位置来拖动框架,则可以使用
ComponentMover

注册框架的
根窗格
,这可能是因为它受到了应用程序中注册的其他鼠标侦听器的干扰。层次结构中较高的组件将阻止鼠标事件到层次结构中较低的组件hierarcy@MadProgrammer这是目前jframe上唯一的鼠标侦听器(实际上是任何侦听器)。谢谢你的努力:)