概要

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

サンプルコード

private static final int MW = 320;
private static final int MH = 200;
//...
frame.addComponentListener(new ComponentAdapter() {
  @Override 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 all

解説

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

参考リンク

コメント

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