在 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 风格。
我想做一个不可拖动的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 风格。