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);
}
}