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 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. Java Program to Demonstrate the IS_CLOSED_PROPERTY Field in JDesktopPane
Below is the implementation of the JDesktopPane:
// 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;
}
}