JTextFieldが小さくなってしまう

ほとんど初体験の、JavaGUI


あるボタンを押したら、あるボタンが表示される。
みたいなものを作成していたら、ボタンを押したタイミングでJTextFieldが潰れてしまいました。


惨めな姿です。


原因を探ったところ・・・

その理由
GridBagLayoutはコンポーネントの最小サイズと推奨サイズからグリッドバグのサイズを求めます。
基本的には推奨サイズが使われるはずですが、コンテナとコンポーネントのサイズの関係で最小サイズが使用される場合があります。
この時、JTextField等のコンポーネントはデフォルトの最小サイズが0なので当然つぶれます。


解決法:
JComponent#setMinimumSize()というメソッドで明示的に推奨サイズを与えてあげると
コンポーネントがつぶれることはありません。


http://satoshi.kinokuni.org/tech/SwingTipsLayout.htmlさん

なるほど。何となく釈然としないけれども・・・。