2010-12-12 6 views
1

JLabelのサイズを変更しようとすると問題が発生します。私のアプリケーションでは、次のstrucutreが表示されます。前のリスト項目の中の何かのようなすべてのリスト項目を理解する。JLabelのsetSize後にpreferredSizeを変更する

  • JFrame(レイアウトヌル、固定サイズ、サイズ変更不可、異なる人が使用)。

  • JPanel(レイアウトヌル、すべてのウィンドウのサイズで、場所は私の仕事を入れました)。

  • さまざまなレイアウト(メインパネル内のコンテンツの領域、html divsのように考えることができます)を持つさまざまなJPanel。

  • レイアウトnullを持つこの「divs」の1つに、フローレイアウトを持つJPanelの拡張クラスがあります。

  • このextedendのすべての内部クラスはpreferredSizesのラベルです。

これをすべて作成したら、theFrame.setVisible(true)を呼び出すことです。すべてが有益に機能します。

しかし、私のアプリケーションの流れの中で、私はラベルの1つのサイズを変更する必要があります。次に、単にlabel.setPreferredSize(d)を呼び出すと、変更は変更されません。この関数は、フレームを表示する前に呼び出すと機能的に機能しますが、後では機能しません。

私は、pack()、validate()、repaint()などのようなものを使用しないという問題があると感じています。私は再呼び出しを呼び出して、jlabelを検証し、メインパネルを再描画しますが、動作しません。

私はawtとswingで比較的新しいです。これは宿題です。私の悪い英語の使用を申し訳ありません、あなたの助けに感謝します。

答えて

1

JLabelのサイズを変更した後は、revalidate()に電話してください。これにより、JLabelのサイズが変更されます(親フレームのサイズ変更など、再レイアウトをトリガするイベントを待たずに)。

JLabel lbl_test; 

lbl_test.setPreferredSize(new Dimension(100, 100)); 
lbl_test.revalidate(); 

私は確かではないんだとあなたが問題を抱えているどのクラス、心に留めておくべきもう一つの事。レイアウトマネージャと混在したヌルレイアウト(絶対配置)は、奇妙なことが起こる原因となります。

+0

非常にありがとうございます。それは動作します。 revalidateの使用についての説明もありがとうございます。 – davidgnin

関連する問題