在 Windows 中使 JFrame 不可拖动

Make JFrame undraggable in Windows

我想做一个不可拖动的JFrame(用户在点击标题栏和移动鼠标时不能移动window)。

是否可以在 Windows 中做到这一点?

import javax.swing.JFrame;

public class Test extends JFrame {
    
    public Test() {
        this.setResizable(false);
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

我在 Windows 10 上使用 Java 11。

来自another Whosebug问题:-

将此添加到您的代码中

private void formComponentMoved(java.awt.event.ComponentEvent evt) {                                    
       this.setLocationRelativeTo(null);
    }     

frame.addComponentListener(new java.awt.event.ComponentAdapter() {
                public void componentMoved(java.awt.event.ComponentEvent evt) {
                    formComponentMoved(evt);
                    frame.setLocation(frame.getX(),frame.getY());
                }
            });

你不能

因为帧的 setBounds 发生在帧对等体上。检查 WFramePeer 代码。

首先,class 是包私有的。你不能 @Override 它并修饰 setWhateverBounds 方法。

其次native方法多

你唯一的希望,

可能是使用 frame.setUndecorated(true) 并创建您自己的标题栏而无需拖动功能。但祝你好运,给这个标题栏原生 UI 风格。