【问题标题】:JSplitPane with 2 JPanels, get size of JPanel after moving the divider带有 2 个 JPanel 的 JSplitPane,移动分隔线后获取 JPanel 的大小
【发布时间】:2012-08-25 15:52:18
【问题描述】:

状态: 我想显示 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);
}
}

【问题讨论】:

    标签: java swing jsplitpane propertychangelistener


    【解决方案1】:

    你需要添加到构造函数中

    p.setContinuousLayout(true);
    

    【讨论】:

    • @user984308:别忘了选择答案
    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多