8

JComponentのサイズはいつ計算されますか?画面に表示された後、またはその前に?.getSize()以前にメッセージを送信した場合.setVisible(true)正しい答えが得られますか?ありがとう

4

4 に答える 4

7

たとえば、デバッグ時にコンポーネントのサイズをチェックして、コンポーネントが表示されない理由を確認することがあります。ほとんどの場合、サイズはGUIがレンダリングされたときに実現されます。これは、トップレベルウィンドウでpack()またはが呼び出されたときに発生する可能性があります。setVisible(true)私の通常のメソッド呼び出しのシーケンスは、pack()最初に呼び出すことです。これは、レイアウトマネージャーに、担当するコンポーネントをレイアウトするように指示し、コンポーネントとGUIのサイズを設定してから、呼び出しsetLocationRelativeTo(null)てGUIを中央に配置し、呼び出しsetVisible(true)て表示します。 。

于 2011-08-22T02:36:49.120 に答える
6

レイアウトマネージャーはコンポーネントのサイズを決定する責任があるため、コンポーネントがフレームに追加され、フレームがパック()されて表示されるまで、実際のサイズはわかりません。

コンポーネントの推奨サイズを尊重するレイアウトマネージャーを使用する場合は、次を使用できます。

component.getPreferredSize();

なぜサイズを知る必要があると思いますか?通常、サイズについては気にせず、レイアウトマネージャーに任せます。

于 2011-08-22T02:29:55.483 に答える
6

通常の>>シーケンスに加えて、pack()ここ示すように、ジオメトリのプレビューに関連することができsetVisible(true)ます。getPreferredSize()validate()Container

于 2011-08-22T02:51:35.253 に答える
6

私が正しく理解していれば、コンポーネントのサイズを知りたいのは、ユーザーが[その他のオプション]ボタンをクリックするとJWindowのサイズをリセットするためですよね。次のことをお勧めします。ユーザーがそのボタンをクリックしたら、UIを更新して追加のコンポーネントを追加し、で実行pack()JWindowます。適切なサイズにサイズ変更する必要があります。

于 2011-08-22T03:52:16.133 に答える