Java 如何在使用鼠标单击并拖动Jframe时使其移动

Java 如何在使用鼠标单击并拖动Jframe时使其移动,java,swing,jframe,Java,Swing,Jframe,我一直在尝试在使用鼠标拖动jframe时如何移动它。但我找不到解决办法 我曾尝试在Jframe上实现侦听器,但它没有按照我预期的方式工作 JFrame jframe = new JFrame(); jframe.setSize(500,500); jframe.setLocation(400, 100); jframe.setVisible(true); jframe.addMouseListener(new MouseListener() { @Override

我一直在尝试在使用鼠标拖动jframe时如何移动它。但我找不到解决办法

我曾尝试在Jframe上实现侦听器,但它没有按照我预期的方式工作

JFrame jframe = new JFrame();
jframe.setSize(500,500);
jframe.setLocation(400, 100);
jframe.setVisible(true);

jframe.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {

        }

        @Override
        public void mousePressed(MouseEvent e) {

        }

        @Override
        public void mouseReleased(MouseEvent e) {

        }

        @Override
        public void mouseEntered(MouseEvent e) {

        }

        @Override
        public void mouseExited(MouseEvent e) {

        }
   });

您可以使用MouseMotionListener。使用mouseMoved事件方法移动鼠标时获取鼠标的位置,并将其与拖动事件一起使用以相应地定位帧:

jframe.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
    xDrag = e.getX();
    yDrag = e.getY();

    JFrame sFrame = (JFrame) e.getSource();
    sFrame.setLocation(sFrame.getLocation().x+xDrag-xPress, 
    sFrame.getLocation().y+yDrag-yPress);
 }

 @Override
 public void mouseMoved(MouseEvent e) {
     xPress = e.getX();
     yPress = e.getY();
  }
});

在类中声明变量xDrag、yDrag、xPress、yPress。我希望这有帮助。

您可以使用MouseMotionListener。使用mouseMoved事件方法移动鼠标时获取鼠标的位置,并将其与拖动事件一起使用以相应地定位帧:

jframe.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
    xDrag = e.getX();
    yDrag = e.getY();

    JFrame sFrame = (JFrame) e.getSource();
    sFrame.setLocation(sFrame.getLocation().x+xDrag-xPress, 
    sFrame.getLocation().y+yDrag-yPress);
 }

 @Override
 public void mouseMoved(MouseEvent e) {
     xPress = e.getX();
     yPress = e.getY();
  }
});

在类中声明变量xDrag、yDrag、xPress、yPress。我希望这有帮助。

我不明白<默认情况下,code>JFrame是可拖动的。只需将鼠标指针放在
JFrame
标题栏中并拖动鼠标即可。您的
JFrame
是否没有标题栏?除了将鼠标放在标题栏中,是否要以其他方式拖动
JFrame
?你在哪个站台?你在Windows上吗?还是Linux?还是苹果?还有什么?框架没有标题栏,因为我已经禁用了它。我需要能够移动帧时,我用鼠标指针拖动它。我不明白<默认情况下,code>JFrame是可拖动的。只需将鼠标指针放在
JFrame
标题栏中并拖动鼠标即可。您的
JFrame
是否没有标题栏?除了将鼠标放在标题栏中,是否要以其他方式拖动
JFrame
?你在哪个站台?你在Windows上吗?还是Linux?还是苹果?还有什么?框架没有标题栏,因为我已经禁用了它。我需要能够移动帧时,我拖动它使用鼠标指针。