1

ステータス: JSplitPane を使用して画像を含む 2 つの JPanel を表示したい (上部に 1 つの画像、下部に 1 つの画像)

ペインの仕切りを移動すると、それに応じて両方のパネルのサイズが変更されます。(画像が最大限のスペースを占めること)

問題: PropertyChangeListener を使用して分割線の位置の変更を追跡していますが、実際の「再描画」の前にイベントが発生したようです。ウィンドウの

私が試したこと: - サイズを読み取る前にコンポーネントを再描画する

最小限の作業例:

public class Main {
public static void main(String argv[]) {
    MyFrame f = new MyFrame();
}
}

class MyFrame extends JFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L;
JPanel anyPanel, anyPanel2;
JSplitPane p;

public MyFrame() {
    PropertyChangeListener resizeHandler = new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            System.out.println(anyPanel.getHeight());
        }
    };

    anyPanel = new JPanel();
    anyPanel2 = new JPanel();
    p = new JSplitPane(JSplitPane.VERTICAL_SPLIT, anyPanel, anyPanel2);
    p.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, resizeHandler);
    getContentPane().add(p);
    this.add(p);
    this.pack();
    this.setVisible(true);
}
}
4

1 に答える 1

2

コンストラクタに追加する必要があります

p.setContinuousLayout(true);
于 2012-08-30T21:02:02.493 に答える