2016-11-17 7 views
0

私のプログラムでJLabels、JTextAreas、JRadioButtonsなどのフォントタイプを変更するたびに、これらのものがすべて含まれているパネルのサイズが変更され、それらを再びフィットさせるためにフレームをパック()する必要があります私は明らかに望んでいないメインフレームのサイズを変更します。他のサイズを変更せずにフォントタイプを変更する方法はありますか?JPanelsとJFrameのサイズを変更せずにフォントタイプを変更できますか?

+0

コンポーネントのプロパティが変更された場合、コンポーネントが再検証されると、コンポーネントの優先サイズが変更される可能性があるためです。これにより、レイアウトマネージャが呼び出され、コンポーネントが正しく表示されるようになります。したがって、これは必要なステップであり、避けるべきではありません。あなたは、おそらくスクロールペインを使って、サイズの変更を可能にするために画面を再設計する必要がありますか? – camickr

答えて

1

JLabel、JTextAreaなどのデフォルトサイズは「ルックアンドフィール」に委譲されていません。これは、フォント、サイズ、テキストのフォントメトリックを使用してサイズを決定します。

より大きいフォント、大きいボタン。

私は十分な空きスペースで何かグリッド・ベースを使用する代わりに、正確なレイアウトを負いません。ただ、これを受け入れることをアドバイスし、きれいに...

すなわちを扱うレイアウトマネージャを使用したいですフォントサイズが変わる可能性があります。

まだこれが必要な場合は、次のようにコントロールの優先サイズを上書きすることができます。これは、これらのヒントを考慮したレイアウトマネージャを使用していることを前提としています。

public static void main(String [] args) { 
    JFrame frame = new JFrame(); 
    JTextField small = new JTextField("small"); 
    JTextField big = new JTextField("big"); 
    big.setFont(big.getFont().deriveFont(Font.BOLD, 40)); 
    big.setPreferredSize(new Dimension(123, 20)); 
    big.setMaximumSize(new Dimension(123, 20)); 
    frame.setLayout(new FlowLayout()); 
    frame.add(small); 
    frame.add(big); 

    frame.setVisible(true); 
} 
関連する問題