• 追加された行はこの色です。
  • 削除された行はこの色です。
#navi(../)
*JFrameのサイズを固定 [#z96189b1]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-05-17~
更新日:&lastmod;
---
category: swing
folder: FixedSizeFrame
title: JFrameのサイズを固定
tags: [JFrame, JDialog]
author: aterai
pubdate: 2004-05-17T02:42:23+09:00
description: JFrameやJDialogのサイズを固定し、変更不可にします。
image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTM4ZlDyXI/AAAAAAAAAZ4/xXHwfOJP7p0/s800/FixedSizeFrame.png
---
* 概要 [#summary]
`JFrame`や`JDialog`のサイズを固定し、変更不可にします。

#contents
**概要 [#l761185f]
JFrameやJDialogのサイズを固定し、変更不可にします。
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTM4ZlDyXI/AAAAAAAAAZ4/xXHwfOJP7p0/s800/FixedSizeFrame.png)

http://terai.xrea.jp/swing/fixedsizeframe/screenshot.png
* サンプルコード [#sourcecode]
#code(link){{
frame.setResizable(false);
}}

**サンプルコード [#qeee79ae]
 frame.setResizable(false);
* 解説 [#explanation]
上記のサンプルでは、`JFrame#setResizable(...)`メソッドを使用して`JFrame`をマウスなどでリサイズ不可に設定しています。

-[[サンプルを起動>http://terai.xrea.jp/swing/fixedsizeframe/sample.jnlp]]
-[[jarファイル>http://terai.xrea.jp/swing/fixedsizeframe/sample.jar]]
-[[ソース>http://terai.xrea.jp/swing/fixedsizeframe/src.zip]]
**解説 [#eff61b3d]
JFrame#setResizableメソッドで、フレームのサイズを変更不可にしています。タイトルバーの最大化ボタンなども選択できなくなります。
**コメント [#zeef23a7]
-アイコン化ボタンを無効化する方法はないようですね。JInternalFrameならクローズも最大化もアイコン化も全部いじれるのに。 -- [[さく]] &new{2004-08-12 (木) 15:17:30};
-なんだかなさそうですね。JDialog使うか、以下みたいにして誤魔化すか…、L&F自作すれば何とかなるのかな?
 //XPだと「画面のプロパティ」「デザイン」「次のアニメーション効果を…」
 //を無効にしないと、ちょっとかっこ悪い。
 frame.addWindowListener(new WindowAdapter() {
   public void windowIconified(WindowEvent e) {
     frame.setState(frame.NORMAL);
   }
 });
-- [[terai]] &new{2004-08-12 (木) 17:01:45};
-[[Go state-of-the-art with IFrame>http://www-106.ibm.com/developerworks/library/j-iframe/]] も面白そうです。IBMだからSWT使ってるのかなと思ったらJFrame継承して作られています。 -- [[terai]] &new{2004-08-12 (木) 18:31:16};
- タイトルバーの最大化ボタンなども選択不可になる
- この設定を切り替えると`LookAndFeel`依存のフレーム装飾が変化して`JFrame`自体のサイズも変化する場合がある

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Frame.html#setResizable-boolean- Frame#setResizable(boolean) (Java Platform SE 8)]

* コメント [#comment]
#comment
- アイコン化ボタンを無効化する方法はないようですね。`JInternalFrame`ならクローズも最大化もアイコン化も全部いじれるのに。 -- &user(さく); &new{2004-08-12 (木) 15:17:30};
- なんだか無さそうですね。`JDialog`を使うか、以下のように誤魔化すか…、`LookAndFeel`を自作すれば何とかなるのかな? -- &user(aterai); &new{2004-08-12 (木) 17:01:45};
#code{{
frame.addWindowListener(new WindowAdapter() {
  @Override public void windowIconified(WindowEvent e) {
    frame.setExtendedState(Frame.NORMAL);
  }
});
}}

- %%[https://www.ibm.com/developerworks/library/j-iframe/ Go state-of-the-art with IFrame]%%(リンク切れ)も面白そうです。IBMだから`SWT`使ってるのかなと思ったら`JFrame`を継承して作られています。 -- &user(aterai); &new{2004-08-12 (木) 18:31:16};
- レイアウト変更したときに`setAlwaysOnTop`が紛れ込んで、`Java Web Start`でサンプルが起動できなくなっていた不具合を修正。 -- &user(aterai); &new{2009-03-14 (土) 17:44:18};

#comment