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

时间:2011-01-31 15:21:54

标签: java swing miglayout jsplitpane

后续问题to my other one;

如何启用比例调整大小?我认为这样可行,但事实并非如此:

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 个答案:

答案 0 :(得分:6)

splitPane.setResizeWeight(0.333);

答案 1 :(得分:2)

我不能谈论MigLayout,我不知道。但是,在我看来,这个问题的最佳解决方案是swing-generic:你向JSpiltPane添加ComponentListener并通过按大小比率构建的系数调整其包含的组件的大小。