开发者

Java - Lock Aspect Ratio of JFrame

Is it possible to lock the aspect ratio of a JFrame in Java Swing?

For example, if my window is 200px by 200px, and the user wants to resize it, I want the ratio between the width and the height at 1:1, so that if开发者_如何学编程 the new width is 400px, the new height is forced to 400px.

I'm aware of ComponentListener and componentResized, but I'm having difficulty not getting it to go into an infinite loop of resizing, because I'm resizing the window in a resize listener.

Thanks!


I don't have a specific answer to your question, but I have often found that the way to avoid the "infinite loop of resizing" you talk about is to defer your call to resize the window:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜