3

JFrame のサイズが変更されたときに Java で正確に何が起こるかについて興味があります。

JFrame内のbigCONtainer(JPanelタイプ)にコンポーネントを追加する際に問題が発生したため、これを求めています。ユーザーが特定のアクションを実行したときに何かを追加したいのですが、JFrameのサイズが何らかの形で変更されるまで、コンポーネントが目に見えて追加されません。

これは、新しいコンポーネントを表示させるためにいくつかの実験を行っていたときに発見されました。myJFrame.pack() を呼び出しました。二次的な質問として、 pack() が何をするのか、一般的およびサイズ変更に固有のものを知りたいです。Java ドキュメントでは、すべてのコンポーネントのサイズを適切なサイズに変更するように聞こえます。実装で pack() を使用して新しいコンポーネントを表示することにした場合の私の解決策は、常に優先サイズを設定することです。これが受け入れられたプログラミングの実践であることを証明できる人はいますか? それは確かに良い考えのようです。

新しいコンポーネントを表示するために repaint() も試しましたが、うまくいきませんでした。

4

1 に答える 1

4

実行時に追加または削除されるコンポーネントを取得するコンテナを呼び出しrevalidate()てから呼び出す必要があります。 repaint()

revalidate()コンテナーのレイアウト マネージャーに、コンテナーに含まれるコンポーネントを再レイアウトするように指示しますが、これがコードに欠けているものです。この要求がなければ、レイアウトは変更されず、GUI のサイズを変更するまで変更は表示されませんが、ほとんど同じことが行われます。

起動時に GUI にコンポーネントを追加する場合の解決策は、すべてのコンポーネントが追加されたでのみ最上位のコンテナーを呼び出すことpack()です。setVisible(true)

say what does の詳細についてpack()は、ソースコードを読んでください。

于 2013-06-22T01:10:11.553 に答える