JSplitPane + MiGLayout:如何启用比例自动调整大小

4

关于我的另一个问题的后续问题:如何启用比例调整大小?

我以为这个会起作用,但它并没有:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import net.miginfocom.swing.MigLayout;

public class SplitPaneQuestion {
    public static void main(String[] args) {
        JFrame frame = new JFrame("SplitPaneQuestion");
        JPanel panel = new JPanel();
        frame.setContentPane(panel);
        panel.setLayout(new MigLayout("","[]","[grow]"));
        JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        panel.add(splitpane, "push, grow");

        splitpane.setTopComponent(new JButton("top"));
        splitpane.setBottomComponent(new JButton("bottom"));
        splitpane.setDividerLocation(0.333);

        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

我希望在调整整个框架大小时,顶部/底部按钮大小的比例保持不变。(默认为1:2)

我该如何实现这个功能?

2个回答

6
splitPane.setResizeWeight(0.333);

啊哈!谢谢,我本来期望 setDividerLocation 能够起作用,但当它没有时,我就不知道该怎么做了。 - Jason S

2

我不清楚MigLayout,无法对其进行评价。但是,在我看来,解决这个问题的最佳方案是swing-generic:您可以向JSpiltPane添加一个ComponentListener,并通过大小比例构建的系数来调整其包含组件的大小。


+1:我需要为其他目的做这个,所以感谢提供 ComponentListener 的链接。 - Jason S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接