java - 移动带有自定义标题栏的 JFrame

标签 java jframe drag mousemotionlistener

如何移动具有自定义标题栏的 JFrame

我删除了默认标题栏并进行了自己的设计。这是它的样子:

enter image description here

我想知道当光标仅放在标题栏上而不是整个框架上时如何拖动 JFrame。我已经搜索过了,我已经看过很多样本,但我还是不明白。你们有我能理解的简单代码吗?

我还没有启动代码,因为我不知道如何启动它。我所知道的是,它是关于 mouseDraggedMouseMotionListener 的。

最佳答案

我实现了以下内容:

public class DragFrame extends JFrame {

  int mpX, mpY;

  public DragFrame() {

    addMouseListener( new MouseAdapter() {
        @Override
        public void mousePressed( MouseEvent e ) {
          mpX = e.getX();
          mpY = e.getY();
        }
    } );

    addMouseMotionListener( new MouseMotionAdapter() {
        @Override
        public void mouseDragged( MouseEvent e ) {
          setLocation(
              getLocation().x + e.getX() - mpX,
              getLocation().y + e.getY() - mpY );
        }
    } );
  }
}

感谢 @peeskillet 提供指向 Drag and Resize undecorated JFrame 的关键链接灵感来自将鼠标位置保存在 mousePressed(...) 上。

关于java - 移动带有自定义标题栏的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26318474/

相关文章:

Java JFrame 卡住

Java GUI 使用 setVisible()

ios - 如何取消 UICollectionView 的拖动?

Angular CDK 拖放 : Cancel drag-action

java - 如何将目录中的文件列表从 PHP 传递到 Android/Java

java - kSOAP2:在 Java 中将任何类型转换为复杂类型

java - 当父框架设置为不可调整大小时,JPanel 会调整大小

javascript - 拖放 HTML5 元素和 javascript 问题

java - 无法建立 JDBC 连接 [jdbc :postgres://localhost:5432/hibernatedb]

java - null != something 和 something != null 之间的区别