import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.HeadlessException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.border.EmptyBorder; import org.jdesktop.swingx.JXMultiSplitPane; import org.jdesktop.swingx.MultiSplitLayout; /** * Test Multisplit. * * @author Martin Miller * @version 0.1 2012-04-05 * @see http://www.java.net/comment/reply/884868 */ public class TestMultiplitSplit extends JFrame { private JXMultiSplitPane msp; private MultiSplitLayout.Split splitModel; public TestMultiplitSplit() throws HeadlessException { super("test"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // MultiSplit Layout msp = new JXMultiSplitPane(); splitModel = new LeftRightSplitPaneModel(); msp.getMultiSplitLayout().setModel(splitModel); MultiSplitLayout layout = msp.getMultiSplitLayout(); msp.setBorder(new EmptyBorder(2, 2, 2, 2)); setLayout(new BorderLayout()); msp.add(new JButton("LEFT"), LeftRightSplitPaneModel.LEFT); msp.add(new JButton("RIGHT"), LeftRightSplitPaneModel.RIGHT); layout.layoutByWeight(msp); // <-- Might be important for good results add(msp, BorderLayout.CENTER); setSize(new Dimension(800,600)); setLocationRelativeTo(null); } /** * MultiSplitPane Layout. * * +--------+---------+ * | | | * | l | r | * | | | * +--------+---------+ */ class LeftRightSplitPaneModel extends MultiSplitLayout.Split { public static final String LEFT = "l"; public static final String RIGHT = "r"; protected MultiSplitLayout.Leaf left = new MultiSplitLayout.Leaf(LEFT); protected MultiSplitLayout.Leaf right = new MultiSplitLayout.Leaf(RIGHT); public LeftRightSplitPaneModel() { super(); setRowLayout(true); left.setWeight(0.3); right.setWeight(0.7); this.setWeight(1.0); setChildren(left, new MultiSplitLayout.Divider(), right); } } public static void main(String[] args) { JFrame f = new TestMultiplitSplit(); f.setVisible(true); } }