それぞれMigLayoutを使用してパネルをネストしました。
2 行の MigLayout を使用したパネルアウター。各行には、次の定義を持つネストされたパネル ( upperおよびlower ) が含まれています。
JPanel upper = new JPanel(); // External component
add(upper, "cell 0 0,grow"); // "cell 0 1, grow" - for the lower
upper.setLayout(new MigLayout("", "[][grow]", "[]"));
これは概略図です。
+----------------+---------------------------+
| |upper column 1 size |
| v |
| +-------------+-------------------+ |
| | | | |
| | label1 | textfield1 |upper |
| | | | |
| +-------------+-------------------+ |
| | | outer
| +-------------v------+------------+ |
| | | | |
| | label2 - (longer) | textfield2 | lower |
| | | | |
| +--------------------+------------+ |
| ^ |
| |lower column 1 size |
+--------------------------------------------+
label2 のテキストは、label1 のテキストよりも長くなっています。これがその外観です。
テキストフィールドの右側の境界線を揃えたいのですが、それらは異なるパネルにあります (別々の LayoutManagers を使用)。
sizegroup を両方の列定義に設定しようとしましたが、これは変更されませんでした。MigLayouts はお互いを認識していないため、これはどういうわけか理にかなっています。(ホワイトペーパーのサイズグループの定義を参照してください)
パネルにサイズをハードコーディングせずに、上部パネルと下部パネルの最初の列が同じ幅になるようにするにはどうすればよいですか?
私が望んでいないのは、これらすべての列定義を変更し、(同じ) 固定幅をハードコーディングすることです。また、ネストされたパネルは、再利用する UI コンポーネントであるため、独立したままにする必要があります。