问题
我想知道是否可以使 JFrame
不可移动/可拖动 - 只是出于好奇,而不是为了真正的用例。问题是操作系统的窗口管理器负责窗口的外观,但程序本身只有几个可能的设置。这就是我寻找黑客的原因。
我尝试过的
- 删除了
JFrame
的装饰,如 this 中所述回答(但是,仍然可以移动窗口,例如在 GNU/Linux 上按住 ALT 键) - 设置一个
ComponentListener
,如果JFrame
移动,它会重置位置(但是,这看起来很麻烦,因为监听器仅在拖动之后使用react,但JFrame
应始终保持在同一位置) - 创建了一个全屏
JFrame
,使其透明并添加了一个JPanel
来模拟窗口(但是,即使窗口最大化,仍然可以拖动窗口) - 使用
JWindow
和JDialog
代替(也不起作用)
有没有办法通过使用不同的方法或改进我的一种方法来实现所需的行为?
最佳答案
private void formComponentMoved(java.awt.event.ComponentEvent evt) {
this.setLocationRelativeTo(null);
}
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentMoved(java.awt.event.ComponentEvent evt) {
formComponentMoved(evt);
}
});
对我有用。
关于java - 如何让JFrame不可移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811834/