状态:
我想显示2个JPanel,其中包含使用JSplitPane的图像(顶部为一幅图像,底部为一幅图像)

当我移动窗格的分隔线时,我希望两个面板都相应地调整大小。 (图像占用最大的空间)

问题:
我正在使用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);
}
}

最佳答案

您需要添加到构造函数

p.setContinuousLayout(true);

关于java - 具有2个JPanels的JSplitPane,移动分隔线后获取JPanel的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12205006/

10-10 04:07