• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JFrameの縦横比を一定にする
#navi(../)
RIGHT:Posted by &author(aterai); at 2006-11-06
*JFrameの縦横比を一定にする [#kdb0783d]
JFrameの幅と高さの比率が一定になるように制限します。
---
title: JFrameの縦横比を一定にする
tags: [JFrame]
author: aterai
pubdate: 2006-11-06
description: JFrameの幅と高さの比率が一定になるように制限します。
---
* 概要 [#kdb0783d]
`JFrame`の幅と高さの比率が一定になるように制限します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTKJeWlAAI/AAAAAAAAAVg/GMclfo0TYBM/s800/ConstrainedProportions.png)

//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTKJeWlAAI/AAAAAAAAAVg/GMclfo0TYBM/s800/ConstrainedProportions.png)

**サンプルコード [#ff7d99b8]
* サンプルコード [#ff7d99b8]
#code(link){{
final int mw = 320;
final int mh = 200;
frame.addComponentListener(new ComponentAdapter() {
  public void componentResized(ComponentEvent e) {
  @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);
  }
});
}}

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

**参考リンク [#qf286589]
-[[JFrameの最小サイズ>Swing/MinimumFrame]]
-[[DynamicLayoutでレイアウトの動的評価>Swing/DynamicLayout]]
* 参考リンク [#qf286589]
- [[JFrameの最小サイズ>Swing/MinimumFrame]]
- [[DynamicLayoutでレイアウトの動的評価>Swing/DynamicLayout]]

**コメント [#ndb3de0e]
* コメント [#ndb3de0e]
#comment
- これはドラッグ中は自由なサイズでボタンを離したときにサイズが正しく変更されます。ドラッグ中も正しい比率になるのは無理でしょうか? --  &new{2007-11-10 (土) 00:17:13};
-- ども。今のJavaだけだと難しいかもしれません。すこし調べてみます。 -- [[aterai]] &new{2007-11-12 (月) 11:45:22};
-- ども。今の`Java`だけだと難しいかもしれません。すこし調べてみます。 -- &user(aterai); &new{2007-11-12 (月) 11:45:22};

#comment