java - 如何让JFrame不可移动?

标签 java swing jframe jdialog jwindow

问题

我想知道是否可以使 JFrame 不可移动/可拖动 - 只是出于好奇,而不是为了真正的用例。问题是操作系统的窗口管理器负责窗口的外观,但程序本身只有几个可能的设置。这就是我寻找黑客的原因。

我尝试过的

  • 删除了 JFrame 的装饰,如 this 中所述回答(但是,仍然可以移动窗口,例如在 GNU/Linux 上按住 ALT 键)
  • 设置一个 ComponentListener,如果 JFrame 移动,它会重置位置(但是,这看起来很麻烦,因为监听器仅在拖动之后使用react,但 JFrame始终保持在同一位置)
  • 创建了一个全屏 JFrame,使其透明并添加了一个 JPanel 来模拟窗口(但是,即使窗口最大化,仍然可以拖动窗口)
  • 使用 JWindowJDialog 代替(也不起作用)

有没有办法通过使用不同的方法或改进我的一种方法来实现所需的行为?

最佳答案

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/

相关文章:

java - 为什么我的 for 循环只返回 JTable 中的第一个值?

java - JLabel 位置不起作用,无法选择位置

java - Tomcat 性能问题

java - 使用 Java 的 Google 数据存储模拟器(不使用 GAE)

java - JList添加到JScrollPane后消失

java - JLabel 与 JFrame 不完全一致

java - 判断JLabel文本是否被截断?

java - 额外的 'if checks' 如果该值已经设置 - 什么更快,什么使用更多资源?

java限制列表项

java - 如何使 JPanel 在 SplitPane 中采用 100% 宽度和高度