Open In App

Java JDesktopPane

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

Java JDesktopPane is a part of the Swing library that helps Java Developers to make desktop-like applications, It allows the developers to manage and organize child frames within a parent frame. In this article, we are going to see some constructors, methods, fields, and some examples of JDesktopPane.

Default constructors of JDesktopPane

JDesktopPane(): It is a Default Constructor of JDesktopPane Class, it helps to Create a new JDesktopPane.

Create a new JDesktopPane

JDesktopPane desktopPane = new JDesktopPane();

Methods of the JDesktopPane

Methods

Description

add(JInternalFrame frame)

Method for Adds a JInternalFrame(Child) to the JDesktopPane(Parent).

remove(JInternalFrame frame)

Method for Removes a JInternalFrame from the JDesktopPane

getAllFrames()

Method for Returns an array of all the internal frames within the JDesktopPane.

getSelectedFrame()

Method for Returning the currently selected internal frame.

Fields for Java JFrame

Fields

Description

DEFAULT_DRAG_MODE

It is a constant, that represents the default drag mode for internal frames.

LIVE_DRAG_MODE

This constant indicates that when an internal frame is dragged within the JDesktopPane, the entire contents of the item should be visible during the drag operation.

OUTLINE_DRAG_MODE

This constant indicates that, during the drag operation, only an outline or a frame-like representation of the item being dragged should appear inside the JDesktopPane.

IS_CLOSED_PROPERTY

It is a Constant,that is used for check the internal frame is close or not.

Following are the programs to implement JDesktopPane

1. Java Program to demonstrate a simple JDesktopPane

Below is the implementation of the JDesktopPane:

Java




// Java Program to demonstrate
// Simple JDesktopPane
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
  
// Driver Class
public class JDesktopPaneExample {
    // main function
    public static void main(String[] args) {
        // Create and show the main application frame
        SwingUtilities.invokeLater(() -> {
            
            JFrame parentframe = new JFrame("JDesktopPane Example");
            parentframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            parentframe.setSize(800, 600);
              
              // Create a JDesktopPane to manage internal frames
            JDesktopPane desktopPane = new JDesktopPane();
            parentframe.add(desktopPane, BorderLayout.CENTER);
              
              // Create and add two internal frames
            createInternalFrame(desktopPane, "Child Frame 1");
            createInternalFrame(desktopPane, "Child Frame 2");
              
              // Display the main application frame
            parentframe.setVisible(true);
        });
    }
  
    private static void createInternalFrame(JDesktopPane desktopPane, String title) {
          
          // Create a new internal frame
        JInternalFrame internalFrame = new JInternalFrame(title, true, true, true, true);
        internalFrame.setBounds(50, 50, 300, 200);
          
          // Add a text area with the frame's title as content
        JTextArea textArea = new JTextArea(title);
        internalFrame.add(textArea);
  
        // Create a "Close" button to dispose of the internal frame
        JButton closeButton = new JButton("Close");
        closeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                  
                  // Dispose of the internal frame when the "Close" button is clicked
                internalFrame.dispose();
            }
        });
  
        // Create a panel for the "Close" button and add it to the internal frame
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(closeButton);
        internalFrame.add(buttonPanel, BorderLayout.SOUTH);
  
        // Add the internal frame to the JDesktopPane and make it visible
        desktopPane.add(internalFrame);
        internalFrame.setVisible(true);
    }
}


Output :

2

2. Java Program to Demonstrate the IS_CLOSED_PROPERTY Field in JDesktopPane

Below is the implementation of the JDesktopPane:

Java




// Java Program to Demonstrate
// IS_CLOSED_PROPERTY Field in JDesktopPane
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
  
public class JDesktopPaneExample {
  
    public static void main(String[] args) {
        // Create and display the main application frame
        SwingUtilities.invokeLater(() -> {
            JFrame parentFrame = new JFrame("JDesktopPane Example");
            parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            parentFrame.setSize(800, 600);
            // Create a JDesktopPane to manage internal frames
            JDesktopPane desktopPane = new JDesktopPane();
            parentFrame.add(desktopPane, BorderLayout.CENTER);
            // Create and add an internal frame
            JInternalFrame internalFrame = createInternalFrame(desktopPane, "Frame 1");
            desktopPane.add(internalFrame);
            // Add a PropertyChangeListener to the internal frame to detect closure
            internalFrame.addPropertyChangeListener(JInternalFrame.IS_CLOSED_PROPERTY, new PropertyChangeListener() {
                @Override
                public void propertyChange(PropertyChangeEvent evt) {
                    boolean isClosed = (Boolean) evt.getNewValue();
                    if (isClosed) {
                        System.out.println("Internal frame is closed.");
                    } else {
                        System.out.println("Internal frame is not closed.");
                    }
                }
            });
            // Display the main application frame
            parentFrame.setVisible(true);
        });
    }
  
    private static JInternalFrame createInternalFrame(JDesktopPane desktopPane, String title) {
        // Create a new internal frame
        JInternalFrame internalFrame = new JInternalFrame(title, true, true, true, true);
        internalFrame.setBounds(50, 50, 300, 200);
  
        // Add a text area to the internal frame
        JTextArea textArea = new JTextArea(title);
        internalFrame.add(textArea);
        // Create a "Close" button to dispose of the internal frame
        JButton closeButton = new JButton("Close");
        closeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                internalFrame.dispose();
            }
        });
        // Create a panel for the "Close" button and add it to the internal frame
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(closeButton);
        internalFrame.add(buttonPanel, BorderLayout.SOUTH);
        // Make the internal frame visible
        internalFrame.setVisible(true);
  
        return internalFrame;
    }
}


Output:

Output of JDesktopPane Example 2

If We Close the Internal Frame in the Pane then it will report to terminal.

Output of JDesktopPane Example 2 when intnal frame is closed



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads