TITLE:JFrameの縦横比を一定にする

Posted by at 2006-11-06

JFrameの縦横比を一定にする

JFrameの幅と高さの比率が一定になるように制限します。

  • &jnlp;
  • &jar;
  • &zip;
ConstrainedProportions.png

サンプルコード

final int mw = 320;
final int mh = 200;
frame.addComponentListener(new ComponentAdapter() {
  public void componentResized(ComponentEvent e) {
    int fw = frame.getSize().width;
    int fh = mh*fw/mw;
    frame.setSize((mw>fw)?mw:fw, (mh>fh)?mh:fh);
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JFrameのサイズを変更した後、その幅から縦横比が同じになるような高さを計算して、JFrame#setSize(int,int)でサイズを設定し直しています。

参考リンク

コメント

  • これはドラッグ中は自由なサイズでボタンを離したときにサイズが正しく変更されます。ドラッグ中も正しい比率になるのは無理でしょうか? --
    • ども。今のJavaだけだと難しいかもしれません。すこし調べてみます。 -- aterai