Re: JSplitPane resize woes
In article <677c5cd9-ccee-413e-9e3f-9827c37e76f5@googlegroups.com>,
vicky.lalit@gmail.com wrote:
I have an issue with my JSpiltPane. Below is the code snippet.
Problem is I have one panel added in Right side of the Spilt
Pane, and that Panel has many components like
Label,TextArea,Panel,Checkbox etc. And this panel is itself a
Titled Border Panel.
When I am maximizing my screen, the Right side panel is not
resizing. I tried a lot with the layouts but no Luck.
Would be great if someone can help me on this.
I've come to like GroupLayout for labeled fields, as shown
below and here <http://stackoverflow.com/a/8504753/230513>.
A few other points:
Use EventQueue.invokeLater() to construct your GUI on the EDT.
Don't extend top-level containers needlessly.
Don't set a component's size; let it adopt its preferred size or
the size prescribed by the enclosing container's layout.
import java.awt.*;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
public class SplitPane {
private JPanel mainPanel = new JPanel(new BorderLayout());
private Box left = createLeft();
private JPanel right = createRight();
public SplitPane() {
JSplitPane splitPane = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT, left, right);
splitPane.setContinuousLayout(true);
mainPanel.add(splitPane, BorderLayout.CENTER);
JPanel panel = new JPanel();
Border matteBorder = BorderFactory.createMatteBorder(
1, 0, 0, 0, SystemColor.controlDkShadow);
Border titledBorder = BorderFactory.createTitledBorder(matteBorder,
"Circuit Attributes", TitledBorder.LEFT, TitledBorder.ABOVE_TOP);
panel.setBorder(titledBorder);
mainPanel.add(panel, BorderLayout.NORTH);
}
private Box createLeft() {
Box box = new Box(BoxLayout.Y_AXIS);
box.add(new JButton("First"));
box.add(new JButton("Second"));
box.add(new JButton("Third"));
box.add(new JButton("Fourth"));
box.add(new JButton("Fifth"));
box.add(Box.createVerticalGlue());
return box;
}
private JPanel createRight() {
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder("Global Attributes"));
JLabel label1 = new JLabel("Name:");
JTextField field1 = new JTextField(15);
JLabel label2 = new JLabel("VPN ID:");
JTextField field2 = new JTextField(15);
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(label1)
.addComponent(label2))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(field1)
.addComponent(field2)));
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label1)
.addComponent(field1))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label2)
.addComponent(field2)));
return panel;
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame("Split Pane Application");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SplitPane sp = new SplitPane();
f.add(sp.mainPanel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
}
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>