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) {
SwingUtilities.invokeLater(() -> {
JFrame parentFrame =
new
JFrame(
"JDesktopPane Example"
);
parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
parentFrame.setSize(
800
,
600
);
JDesktopPane desktopPane =
new
JDesktopPane();
parentFrame.add(desktopPane, BorderLayout.CENTER);
JInternalFrame internalFrame = createInternalFrame(desktopPane,
"Frame 1"
);
desktopPane.add(internalFrame);
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."
);
}
}
});
parentFrame.setVisible(
true
);
});
}
private
static
JInternalFrame createInternalFrame(JDesktopPane desktopPane, String title) {
JInternalFrame internalFrame =
new
JInternalFrame(title,
true
,
true
,
true
,
true
);
internalFrame.setBounds(
50
,
50
,
300
,
200
);
JTextArea textArea =
new
JTextArea(title);
internalFrame.add(textArea);
JButton closeButton =
new
JButton(
"Close"
);
closeButton.addActionListener(
new
ActionListener() {
@Override
public
void
actionPerformed(ActionEvent e) {
internalFrame.dispose();
}
});
JPanel buttonPanel =
new
JPanel();
buttonPanel.add(closeButton);
internalFrame.add(buttonPanel, BorderLayout.SOUTH);
internalFrame.setVisible(
true
);
return
internalFrame;
}
}