Open In App

Java JLayeredPane

Last Updated : 13 Nov, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

In Java Swing, JLayeredPane is a powerful container that allows you to overlay and manage multiple components within a single container. Each component in a JLayeredPane can occupy a different layer, and you can control their positions and visibility. In this article, we are going to implement the JLayeredPane with different examples. In Java JLayeredPane is a part of javax.swing package.

Default Constructor used for JLayeredPane class

JLayeredPane() : It is the default constructor of JLayeredPane, It is used to create a new JLayeredPane.

Example of JLayeredPane

//Creating an object of JLayeredPane
JLayeredPane layeredPane = new JLayeredPane();

Some Methods of the JLayeredPane

Methods

Description

int getIndexOf(Component com)

Method for returning the index of the specified Component.

int getPosition(Component com)

Method used to return the appropriate position of the component within the layer

int getLayer(Component com)

Method for returning the layer attribute for the specific Component.

add(Component com, Integer layer)

Method for returning the relative attribute for a specific component.

moveToFront(Component com)

Navigate to the Front layer

moveToBack(Component com)

Navigate to the backward layer.

Name of the Classes from which methods are inherited

  1. javax.swing.JComponent
  2. java.awt.Container
  3. java.awt.Component
  4. java.awt.event.MouseListener
  5. java.awt.event.MouseMotionListener
  6. java.awt.event.FocusListener
  7. java.awt.event.KeyListener

Following are the programs to implement JLayeredPane

Example 1:

Java Program to demonstrate a simple JLayeredPane:

Java




// Java Program to demonstrate a simple  JLayeredPane
import javax.swing.*;
import java.awt.*;
  
public class LayeredPaneExample {
    public static void main(String[] args) {
        // Create a JFrame (the main window for the application).
        JFrame frame = new JFrame("JLayeredPane Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
  
        // Create a JLayeredPane to manage the layering of components.
        JLayeredPane layeredPane = new JLayeredPane();
        frame.add(layeredPane); // Add the JLayeredPane to the JFrame.
  
        // Create three colored panels to add to the layered pane.
        JPanel panel1 = createColoredPanel(Color.RED, 100, 100, 200, 200);
        JPanel panel2 = createColoredPanel(Color.GREEN, 150, 150, 200, 200);
        JPanel panel3 = createColoredPanel(Color.BLUE, 200, 200, 200, 200);
  
        // Add the panels to the layered pane with different layer values.
        // The layers determine the stacking order of the panels.
        layeredPane.add(panel1, JLayeredPane.DEFAULT_LAYER);
        layeredPane.add(panel2, JLayeredPane.PALETTE_LAYER);
        layeredPane.add(panel3, JLayeredPane.MODAL_LAYER);
  
        frame.setVisible(true); // Make the JFrame visible.
    }
  
    private static JPanel createColoredPanel(Color color, int x, int y, int width, int height) {
        // Create a colored JPanel with specified color and position.
        JPanel panel = new JPanel();
        panel.setBackground(color);
        panel.setBounds(x, y, width, height);
        return panel;
    }
}


Output:

Output of JLayeredPane Example 1

Example 2:

Implementing getIndexOf(Component com), getLayer(Component com), and getPosition(Component com) methods in JLayeredPane to get a specified layer information.

Below is the implementation of the above example:

Java




// Java Swing Program to Implementing
// getIndexOf(Component com), getLayer(Component com)
// and getPosition(Component com) methods in
// JLayeredPane to get a specified layer information
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
  
// Driver Class
public class LayeredPaneMethodsExample {
    // main function
    public static void main(String[] args)
    {
        JFrame frame = new JFrame("JLayeredPane Example");
        frame.setDefaultCloseOperation(
            JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        
        // Creating an object of JLayeredPane
        JLayeredPane layeredPane = new JLayeredPane();
          
          frame.add(layeredPane); // Adding Frame to it
          
          // Create three colored panels
        JPanel panel1 = createColoredPanel(Color.RED, 100,
                                           100, 200, 200);
        JPanel panel2 = createColoredPanel(Color.GREEN, 150,
                                           150, 200, 200);
        JPanel panel3 = createColoredPanel(Color.BLUE, 200,
                                           200, 200, 200);
          
          // Add the panels to the layered pane with different
        // layer values
        layeredPane.add(panel1, JLayeredPane.DEFAULT_LAYER);
        layeredPane.add(panel2, JLayeredPane.PALETTE_LAYER);
        layeredPane.add(panel3, JLayeredPane.MODAL_LAYER);
          
          // Creating a JButton by clicking which we get layer
        // information
        JButton getInfoButton = new JButton(
            "Click here to get Layer Information");
          
          getInfoButton.setBounds(10, 10, 100, 30);
        frame.add(getInfoButton);
          
          getInfoButton.addActionListener(
            new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    // Get information about the second
                    // panel (panel2)
                    int index = layeredPane.getIndexOf(panel2);
                    int layer = layeredPane.getLayer(panel2);
                    int position = layeredPane.getPosition(panel2);
  
                    JOptionPane.showMessageDialog(null, "Index: " + index 
                            + "\nLayer: " + layer + "\nPosition: " + position);
                }
            });
  
        frame.setVisible(true);
    }
  
    private static JPanel createColoredPanel(Color color,int x, int y,int width,int height)
    {
        JPanel panel = new JPanel();
        panel.setBackground(color);
        panel.setBounds(x, y, width, height);
        return panel;
    }
}


Output:

Output of Example 2 of JLayeredPane



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads