次のようなGUIセットアップがあります。

ドキュメントを表示し、ユーザーがドキュメントJTextAreas内のテキストを追加/削除して編集できるようにします。
ドキュメントを開こうとすると問題が発生します。ドキュメント自体はJPanels、互いの上にあるレイヤーで構成されています。JPanelsGUI の 1 つのポイントに6 つ以上のレイヤーが存在することはありません。
の高さがどうなるか分からないのでJTextArea、親に対して相対的にする必要があります (つまり、指定しません)。
レイアウト マネージャー ( MigLayout) はコンポーネントの正確なサイズ (親との相対サイズ) を認識していないため、最初にその親に親のサイズを問い合わせます。そのサイズは再び不明であり、親の親に尋ねられます (レベル 1 または 2 の JPanel まで)。最終的には、多くのコンポーネントにサイズを問い合わせる必要があります (checkParent(Container)上記の例だけで、MigLayout 内のメソッドが 100 000 回以上呼び出されました)。
私がする必要があるのは、ドキュメントが開かれているときにのみJTextArea(またはJPanelそれが存在する) の高さを設定することです。そのため、レイアウト マネージャーはJTextAreas親に尋ねる必要がなく、再帰的な地獄が発生します。
ドキュメントを開いた後、高さをデフォルトにリセットする必要があります(テキストが追加/削除されると高さが調整されます)。
これを行う方法がまったくわかりません。または、これが進むべき道である場合、上記で説明したことが問題であると確信しています。
いくつかのメモ:
- これは
MigLayoutバグではありません。フォーラムにアクセスしました (下のリンク)。 - これをチェックしてください(最後の投稿)
- そのタスクは情報を保持するだけでなく、必要なスペースを正確に表示することであるため、
JScrollPaneを に入れることはできませんJTextArea - ドキュメントを保存するときに高さを簡単に取得できるため
JTextAreas、ドキュメントを再度開いたときに自由に使用できます
EDIT:この質問で参照されているドキュメントは、JTextAreasなどで使用されている「ドキュメント」ではなく、プログラムのカスタムクラスの「ドキュメント」です(次のように理解されない限り、無関係であるため言及しませんでした) 「文書」)。