次のサイズ変更可能な JPanel を作成しようとしています。
+-----------------------+
| |
| |
| |
| |
| |
| JScrollPane |
| (containing a |
| JTable) |
| |
| |
| |
| |
| |
+-----------+-----------+
| button1 | b2 |
+-----------+-----------+
button1 と b2 を常に同じ幅にしたい。つまり、コンポーネント全体が水平方向にサイズ変更された場合、両方のボタンが同じ幅を獲得または喪失する必要があります。ボタン自体の間、またはボタンとパネルの境界線の間にスペースがあってはなりません。つまり、ボタンは常に使用可能なすべての水平方向のスペースを占有する必要があります。ボタンのテキストの長さが異なることに注意してください。
コンポーネントが垂直方向にサイズ変更された場合、JScrollPane に新しい高さを取得させたいのですが、ボタンのある行は常に同じ高さ (本質的にbutton1.getPreferedSize().getHeight()
) のままにする必要があります。
私はさまざまな LayoutManagers をたくさん試しました。最も近いのは、2 つのボタンを新しい JPanel に配置し、そのパネルの LayoutManger を に設定することでした new GridLayout(0,2)
。これにより、少なくとも両方のボタンの幅が均一に維持され、すべての水平スペースが埋められました。ただし、パネルのサイズを縦方向に変更すると、高さが変わります。
GroupLayout などの他の LayoutManager では、ボタン ( groupLayout.linkSize(button1, b2)
) をリンクすることで同じ幅を維持できましたが、水平方向のスペース全体を埋めることができませんでした。
これを達成するための最良の方法と、どの LayoutManager を使用する必要がありますか?