Java - 锁定 JFrame 的纵横比

标签 java user-interface swing jframe

是否可以在 Java Swing 中锁定 JFrame 的纵横比?

例如,如果我的窗口是 200px x 200px,用户想要调整它的大小,我希望宽度和高度之间的比例为 1:1,这样如果新的宽度是 400px,那么新的高度是强制为 400px。

我知道 ComponentListenercomponentResized,但我很难不让它进入调整大小的无限循环,因为我正在调整调整大小监听器中的窗口。

谢谢!

最佳答案

我对你的问题没有具体的答案,但我经常发现避免你所说的“调整大小的无限循环”的方法是推迟调整窗口大小的调用:

boolean correctAspectRatio = ...; // check to see if new size meets aspect ratio requirements

if (!correctAspectRatio) {
  final Frame _frame = this;
  final int _width = ...; // calculated width
  final int _height = ...; // calculated height

  SwingUtilities.invokeLater(new Runnable(){
    public void run() {
      _frame.setSize(_width, _height);
    }
  });
}

关于Java - 锁定 JFrame 的纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2496761/

相关文章:

java - 在 Netbeans 编辑器中找到并删除 "hidden"swing 组件位置

java - 从给定月份计算前 12 个月 - SimpleDateFormat

java - 为什么spring源代码中的 "NestedExceptionUtils"被声明为抽象类?

java - Android:我应该在 recyclerview 中维护对 Activity 的引用还是有其他方法?

spring - 从 Spring Listener 方法激活的 JavaFX 进度条组件

java - 如何在 JPanel 上绘制 2D 形状

java - 照片由相机上传异常(Firebase 存储)

java - 无法让程序在特定字符串上中断

html - CSS定位面板问题

java - 使用集合 .txt 文件中的 Map TreeSet 对单选按钮进行分组