2. Specifying no layout in JFrame
public class DefaultLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("DefaultLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Set up the content pane.
frame.add(new JButton("a"));
frame.add(new JButton("b"));
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
3. Specifying positions of controls
public class DefaultLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("DefaultLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Set up the content pane.
frame.add(new JButton("a"), BorderLayout.NORTH);
frame.add(new JButton("b"), BorderLayout.SOUTH);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
The default layout for JFrame is
BorderLayout
4. BorderLayout
public class BorderLayoutDemo {
public static boolean RIGHT_TO_LEFT = false;
public static void addComponentsToPane(Container pane) {
if (RIGHT_TO_LEFT) {
pane.setComponentOrientation(
java.awt.ComponentOrientation.RIGHT_TO_LEFT);
}
JButton button = new JButton("Button 1 (PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);
button = new JButton("Button 2 (CENTER)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);
button = new JButton("Button 3 (LINE_START)");
pane.add(button, BorderLayout.LINE_START);
button = new JButton("Long-Named Button 4 (PAGE_END)");
pane.add(button, BorderLayout.PAGE_END);
button = new JButton("5 (LINE_END)");
pane.add(button, BorderLayout.LINE_END);
}
5. public static void main(String[] args) {
JFrame frame = new JFrame("BorderLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
}
If you stretch the frame the center part gets filled by the control in it
8. FlowLayout
public class FlowLayoutDemo extends JFrame{
FlowLayout experimentLayout = new FlowLayout();
public FlowLayoutDemo(String name) {
super(name);
}
public void addComponentsToPane(final Container pane) {
JPanel compsToExperiment = new JPanel();
compsToExperiment.setLayout(experimentLayout);
experimentLayout.setAlignment(FlowLayout.LEADING);
//Add buttons to the experiment layout
compsToExperiment.add(new JButton("Button 1"));
compsToExperiment.add(new JButton("Button 2"));
compsToExperiment.add(new JButton("Button 3"));
compsToExperiment.add(new JButton("Long-Named Button 4"));
compsToExperiment.add(new JButton("5"));
//Left to right component orientation is selected by default
compsToExperiment.setComponentOrientation(
ComponentOrientation.LEFT_TO_RIGHT);
pane.add(compsToExperiment, BorderLayout.CENTER);
}
9. public static void main(String[] args) {
FlowLayoutDemo frame = new FlowLayoutDemo("FlowLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
}
If we stretch the controls are still pinned to the left because
of this:
experimentLayout.setAlignment(FlowLayout.LEADING);
10. GridLayout
public class GridLayoutDemo {
public static void addComponentsToPane(Container pane) {
pane.setLayout(new GridLayout(3, 2));
JButton b1 = new JButton("First");
pane.add(b1);
b1 = new JButton("Second");
pane.add(b1);
b1 = new JButton("Third");
pane.add(b1);
b1 = new JButton("Fourth");
pane.add(b1);
b1 = new JButton("Fifth");
pane.add(b1);
b1 = new JButton("Sixth");
pane.add(b1);
}
public static void main(String[] args) {
JFrame frame = new JFrame("GridBagLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
12. GridBagLayout
public class GridBagLayoutDemo {
public static void addComponentsToPane(Container pane) {
JButton button;
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
button = new JButton("Button 1");
c.gridx = 0;
c.gridy = 0;
pane.add(button, c);
button = new JButton("Button 2");
c.gridx = 1;
c.gridy = 0;
pane.add(button, c);
button = new JButton("Button 3");
c.gridx = 2;
c.gridy = 0;
pane.add(button, c);
button = new JButton("Long-Named Button 4");
c.gridx = 0;
c.gridy = 1;
pane.add(button, c);
13. button = new JButton("5");
c.gridx = 1;
c.gridy = 2;
pane.add(button, c);
}
public static void main(String[] args) {
JFrame frame = new JFrame("GridBagLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
}
GridBagLayout is very flexible layout
14. Questions
๏ต What is the most flexible of these layouts
๏ต Whichone is easy to implement
๏ต Which layout to choose when you want
your control to take up as much space as
possible
๏ต Interested in more? -
๏ต GroupLayout
๏ต SpringLayout