27

Swing で、JSplitPane を作成して 2 つの jpanel をそれぞれ 50% のサイズで分割する最良の方法は何ですか?

パネルに優先サイズを設定しないと、常に最初のパネルがほとんど見えなくなり(2%)、2番目のパネルがほとんど見えなくなります(98%)

前もって感謝します

4

4 に答える 4

29

を使用しての初期スペース分布setDividerLocation(double proportionalLocation)決定してから、同じ値で呼び出して、ペインのサイズが比例して変更されるようにする必要があります。JSplitPanesetResizeWeight(double)

また、注意してください。スペースの計算はの現在のサイズに基づいているため、が表示されるsetDividerLocation(double)前に呼び出すと正しく機能しません。代わりに、 :を含む's paintメソッドをオーバーライドするなど、厄介なハックを行う必要があります。JSplitPaneComponentJPanelJSplitPane

private boolean painted;

@Override
public void paint(Graphics g) {
    super.paint(g);

    if (!painted) {
        painted = true;
        splitPane.setDividerLocation(0.25);
    }
}
于 2010-02-22T15:45:31.070 に答える
28

使用する

setResizeWeight(.5d);

[...] 値 0 (デフォルト) は、右/下のコンポーネントが余分なスペースをすべて取得することを示します (左/上部のコンポーネントは固定されて動作します)。値が 1 の場合、左/上部のコンポーネントがすべての余分なスペースを取得することを指定します。スペース (右/下のコンポーネントは固定で動作します)。[...]

于 2010-02-22T14:35:40.597 に答える
0

ここでのソリューションは、ユーザーが仕切りを移動する場合 (つまり、仕切りの位置が可変) を考慮していません。これを考慮した完全な例は、次の場所にあります。

ユーザーが仕切りの位置を移動した場合、JSplitPane に同じ比率の位置を維持させるにはどうすればよいですか?

于 2016-03-18T12:10:24.390 に答える