Table of content:The JPanel class resides in the package javax.swing and it’s a subclass of the javax.swing.JComponent class.
JPanel newPanel = new JPanel();That creates a new JPanel with double enabled by default.
public class UserDetail extends JPanel {
// code to add components to the panel
}JPanel newPanel = new JPanel(true); // enable double buffering JPanel newPanel = new JPanel(false); // disable double buffering
JPanel newPanel = new JPanel(new GridBagLayout()); JPanel newPanel = new JPanel(new BorderLayout());By default, the panel has a flow layout manager.
// use grid bag layout and no double buffering: JPanel newPanel = new JPanel(new GridBagLayout(), false);
JPanel newPanel = new JPanel(); newPanel.setLayout(new GridBagLayout());
// NOT recommended: JPanel newPanel = new JPanel(); // a FlowLayout manager is created by default newPanel.setLayout(new GridBagLayout()); // RECOMMENDED: JPanel newPanel = new JPanel(new GridBagLayout());
// exception: JPanel newPanel = new JPanel(); newPanel.setLayout(new BoxLayout(newPanel, BoxLayout.X_AXIS));
JLabel label = new JLabel("Enter username:");
JTextField userName = new JTextField(20);
newPanel.add(label);
newPanel.add(userName); JPanel newPanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("Enter username:");
JTextField userName = new JTextField(20);
newPanel.add(label, BorderLayout.NORTH);
newPanel.add(userName, BorderLayout.SOUTH); GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.WEST; constraints.insets = new Insets(10, 10, 10, 10); constraints.gridx = 0; constraints.gridy = 0; newPanel.add(labelUsername, constraints);
JPanel wizardPanel = new JPanel(new CardLayout());
wizardPanel.add("Step1", step1Panel);
wizardPanel.add("Step2", step2Panel); frame.add(newPanel); anotherPanel.add(newPanel);
newPanel.setBackground(Color.CYAN);
newPanel.setOpaque(false); // make transparent background
newPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
newPanel.setBorder(BorderFactory.createEtchedBorder());
newPanel.setBorder(BorderFactory.createLineBorder(Color.RED));
newPanel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Login Panel"));
As you can notice, the panel used in this program has a titled border “Login Panel”. Here is complete source code of the program:package net.codejava.swing.jpanel;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
/**
* This program demonstrates how to use JPanel in Swing.
* @author www.codejava.net
*/
public class SwingJPanelDemo extends JFrame {
private JLabel labelUsername = new JLabel("Enter username: ");
private JLabel labelPassword = new JLabel("Enter password: ");
private JTextField textUsername = new JTextField(20);
private JPasswordField fieldPassword = new JPasswordField(20);
private JButton buttonLogin = new JButton("Login");
public SwingJPanelDemo() {
super("JPanel Demo Program");
// create a new panel with GridBagLayout manager
JPanel newPanel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.anchor = GridBagConstraints.WEST;
constraints.insets = new Insets(10, 10, 10, 10);
// add components to the panel
constraints.gridx = 0;
constraints.gridy = 0;
newPanel.add(labelUsername, constraints);
constraints.gridx = 1;
newPanel.add(textUsername, constraints);
constraints.gridx = 0;
constraints.gridy = 1;
newPanel.add(labelPassword, constraints);
constraints.gridx = 1;
newPanel.add(fieldPassword, constraints);
constraints.gridx = 0;
constraints.gridy = 2;
constraints.gridwidth = 2;
constraints.anchor = GridBagConstraints.CENTER;
newPanel.add(buttonLogin, constraints);
// set border for the panel
newPanel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(), "Login Panel"));
// add the panel to this frame
add(newPanel);
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args) {
// set look and feel to the system look and feel
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SwingJPanelDemo().setVisible(true);
}
});
}
}You can download the code as well as an executable jar file of this program in the attachments section.
Nam Ha Minh is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.