JFrame: Represents a basic, capable of containing other components window. Almost all applications built one JFrame.
JPanel: Panel is a container to hold different Swing components. One can add any number of components to a panel and there can be multiple panels in the same frame. It also supports double buffering which is used in animation to avoid flickering. In double buffering, object is first written to an off-screen memory before display and then switched over to the panel. Flow layout is the default layout for the panel. A panel is an object of class JPanel which is present in package javax.swing.
Some of the constructors defined by JPanel class are as follows:
JPanel ()
JPanel(boolean isDoubleBuffered)
JPanel(LayoutManager layout)
JPanel(LayoutManager layout, boolean isDoubleBuffered)
where,
isDoubleBuffered defines whether the panel is double buffered or not. It can have one of the values: true (double buffered) or false (not double buffered).
layout defines the layout of the panel.
import javax.swing.*;
import java.awt.*;
public class PanelsWithJFrameJavaExample extends JFrame
{
private final int WIDTH = 250;
private final int HEIGHT = 120;
private JButton BtnOne = new JButton("One");
private JButton BtnTwo = new JButton("Two");
private JButton BtnThree = new JButton("Three");
public PanelsWithJFrameJavaExample()
{
super("Panels in Java swing");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel PnlOne = new JPanel();
JPanel PnlTwo = new JPanel();
Container cntnr = getContentPane();
cntnr.setLayout(new FlowLayout());
cntnr.add(PnlOne);
cntnr.add(PnlTwo);
PnlOne.add(BtnOne);
PnlOne.setBackground(Color.BLUE);
PnlTwo.add(BtnTwo);
PnlTwo.add(BtnThree);
PnlTwo.setBackground(Color.BLUE);
setSize(300,450);
setVisible(true);
}
public static void main(String[] args)
{
PanelsWithJFrameJavaExample panel = new PanelsWithJFrameJavaExample();
}
}