1

JLabel のサイズを変更しようとすると問題が発生します。私のアプリケーションでは、次の構造が表示されます。前のリスト アイテム内の何かのように、すべてのリスト アイテムを理解します。

  • JFrame (レイアウト null、固定サイズ、サイズ変更不可、さまざまなユーザーが使用)。

  • JPanel (レイアウト null、ウィンドウ全体のサイズ、作品を置いた場所)。

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

  • Layout null を持つこの「div」の 1 つの内部には、Flow Layout を持つ JPanel の拡張クラスがあります。

  • この拡張クラスのすべての内部には、preferredSizes のラベルがあります。

問題は、これをすべて作成した後、theFrame.setVisible(true); を呼び出すことです。すべて正常に動作します。

しかし、私のアプリケーションの流れの瞬間に、ラベルの 1 つのサイズを変更する必要があります。次に、単に label.setPreferredSize(d) を呼び出すだけで、変更は変わりません。フレームを可視に設定する前に呼び出すと、関数は適切に機能しますが、後で呼び出すと機能しません。

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

私は awt と swing に比較的慣れていません。これは宿題です。英語の使い方が下手で申し訳ありませんが、助けていただきありがとうございます。

4

1 に答える 1

1

JLabel のサイズを変更したら、 revalidate ()を呼び出します。これにより、再レイアウトをトリガーするイベント (親フレームのサイズ変更など) を待たずに JLabel のサイズが変更されます。

JLabel lbl_test;

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

問題が発生しているクラスがわからないので、もう 1 つ注意してください。Null レイアウト (絶対配置) とレイアウト マネージャーが混在していると、奇妙なことが起こります。

于 2010-12-12T14:52:40.080 に答える