Each container can only have one layout manager, however you can easily create any layout you wish by nesting containers with the layout that you want for each one. This could include using a few JPanels inside a JFrame with each JPanel containing a few components. Breaking up the layout like that gives you a lot of control over the grouping and resizing behavior of complex layouts.
Ezzaral
Posting Genius
15,986 posts since May 2007
Reputation Points: 3,250
Solved Threads: 847
This should give you a pretty good idea on how to set them up.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class FrameExample extends JFrame {
JPanel panNorth;
JPanel panWest;
JPanel panCenter;
public FrameExample() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// set up top panel
panNorth = new JPanel();
panNorth.setLayout(new FlowLayout());
panNorth.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
JLabel lblUpper = new JLabel("Upper Panel");
panNorth.add(lblUpper);
add(panNorth, BorderLayout.NORTH);
// set up left panel
panWest = new JPanel();
panWest.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
panWest.setLayout(new GridLayout(2, 1));
JButton btnFirst = new JButton("First");
panWest.add(btnFirst);
JButton btnSecond = new JButton("Second");
panWest.add(btnSecond);
add(panWest, BorderLayout.WEST);
// set up center panel
panCenter = new JPanel();
panCenter.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
panCenter.setLayout(new BorderLayout());
JLabel lblMiddle = new JLabel("Middle thing");
lblMiddle.setHorizontalAlignment(JLabel.CENTER);
panCenter.add(lblMiddle, BorderLayout.CENTER);
add(panCenter);
setSize(300, 300);
setVisible(true);
}
public static void main(String args[]) {
new FrameExample();
}
}
Ezzaral
Posting Genius
15,986 posts since May 2007
Reputation Points: 3,250
Solved Threads: 847