Swing で、JSplitPane を作成して 2 つの jpanel をそれぞれ 50% のサイズで分割する最良の方法は何ですか?
パネルに優先サイズを設定しないと、常に最初のパネルがほとんど見えなくなり(2%)、2番目のパネルがほとんど見えなくなります(98%)
前もって感謝します
Swing で、JSplitPane を作成して 2 つの jpanel をそれぞれ 50% のサイズで分割する最良の方法は何ですか?
パネルに優先サイズを設定しないと、常に最初のパネルがほとんど見えなくなり(2%)、2番目のパネルがほとんど見えなくなります(98%)
前もって感謝します
を使用しての初期スペース分布をsetDividerLocation(double proportionalLocation)
決定してから、同じ値で呼び出して、ペインのサイズが比例して変更されるようにする必要があります。JSplitPane
setResizeWeight(double)
また、注意してください。スペースの計算はの現在のサイズに基づいているため、が表示されるsetDividerLocation(double)
前に呼び出すと正しく機能しません。代わりに、 :を含む's paintメソッドをオーバーライドするなど、厄介なハックを行う必要があります。JSplitPane
Component
JPanel
JSplitPane
private boolean painted;
@Override
public void paint(Graphics g) {
super.paint(g);
if (!painted) {
painted = true;
splitPane.setDividerLocation(0.25);
}
}
使用する
setResizeWeight
(.5d);
[...] 値 0 (デフォルト) は、右/下のコンポーネントが余分なスペースをすべて取得することを示します (左/上部のコンポーネントは固定されて動作します)。値が 1 の場合、左/上部のコンポーネントがすべての余分なスペースを取得することを指定します。スペース (右/下のコンポーネントは固定で動作します)。[...]
ここでのソリューションは、ユーザーが仕切りを移動する場合 (つまり、仕切りの位置が可変) を考慮していません。これを考慮した完全な例は、次の場所にあります。