Java - 锁定JFrame的纵横比

时间:2010-03-23 00:37:56

标签: java user-interface swing jframe

是否可以在Java Swing中锁定JFrame的宽高比?

例如,如果我的窗口是200px乘200px,并且用户想要调整它的大小,我希望宽度和高度之间的比例为1:1,这样如果新宽度为400px,则新高度为被迫400px。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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);
    }
  });
}