# Class JInternalFrame

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JInternalFrame

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`, `RootPaneContainer`, `WindowConstants`

@JavaBean(defaultProperty="JMenuBar", description="A frame container which is contained within another window.") public class JInternalFrame extends JComponent implements Accessible, WindowConstants, RootPaneContainer
A lightweight object that provides many of the features of a native frame, including dragging, closing, becoming an icon, resizing, title display, and support for a menu bar. For task-oriented documentation and examples of using internal frames, see How to Use Internal Frames, a section in The Java Tutorial.

Generally, you add `JInternalFrame`s to a `JDesktopPane`. The UI delegates the look-and-feel-specific actions to the `DesktopManager` object maintained by the `JDesktopPane`.

The `JInternalFrame` content pane is where you add child components. As a convenience, the `add`, `remove`, and `setLayout` methods of this class are overridden, so that they delegate calls to the corresponding methods of the `ContentPane`. For example, you can add a child component to an internal frame as follows:

           internalFrame.add(child);

And the child will be added to the contentPane. The content pane is actually managed by an instance of `JRootPane`, which also manages a layout pane, glass pane, and optional menu bar for the internal frame. Please see the `JRootPane` documentation for a complete description of these components. Refer to `RootPaneContainer` for details on adding, removing and setting the `LayoutManager` of a `JInternalFrame`.

Warning: Swing is not thread safe. For more information see Swing's Threading Policy.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

Since:
  1.2
See Also:
  - `InternalFrameEvent`
  - `JDesktopPane`
  - `DesktopManager`
  - `JInternalFrame.JDesktopIcon`
  - `JRootPane`
  - `RootPaneContainer`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected class`
  `JInternalFrame.AccessibleJInternalFrame`
  This class implements accessibility support for the `JInternalFrame` class.
  `static class`
  `JInternalFrame.JDesktopIcon`
  This component represents an iconified version of a `JInternalFrame`.

  ### Nested classes/interfaces declared in class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ### Nested classes/interfaces declared in class java.awt.Container

  `Container.AccessibleAWTContainer`

  ### Nested classes/interfaces declared in class java.awt.Component

  `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `closable`
  The frame can be closed.
  `static final String`
  `CONTENT_PANE_PROPERTY`
  Bound property name.
  `protected JInternalFrame.JDesktopIcon`
  `desktopIcon`
  The icon that is displayed when this internal frame is iconified.
  `static final String`
  `FRAME_ICON_PROPERTY`
  Bound property name.
  `protected Icon`
  `frameIcon`
  The icon shown in the top-left corner of this internal frame.
  `static final String`
  `GLASS_PANE_PROPERTY`
  Bound property name.
  `protected boolean`
  `iconable`
  The frame can "iconified" (shrunk down and displayed as an icon-image).
  `static final String`
  `IS_CLOSED_PROPERTY`
  Constrained property name indicating that the internal frame is closed.
  `static final String`
  `IS_ICON_PROPERTY`
  Constrained property name indicating that the internal frame is iconified.
  `static final String`
  `IS_MAXIMUM_PROPERTY`
  Constrained property name indicating that the internal frame is maximized.
  `static final String`
  `IS_SELECTED_PROPERTY`
  Constrained property name indicated that this frame has selected status.
  `protected boolean`
  `isClosed`
  The frame has been closed.
  `protected boolean`
  `isIcon`
  The frame has been iconified.
  `protected boolean`
  `isMaximum`
  The frame has been expanded to its maximum size.
  `protected boolean`
  `isSelected`
  The frame is currently selected.
  `static final String`
  `LAYERED_PANE_PROPERTY`
  Bound property name.
  `protected boolean`
  `maximizable`
  The frame can be expanded to the size of the desktop pane.
  `static final String`
  `MENU_BAR_PROPERTY`
  Bound property name.
  `protected boolean`
  `resizable`
  The frame's size can be changed.
  `static final String`
  `ROOT_PANE_PROPERTY`
  Bound property name.
  `protected JRootPane`
  `rootPane`
  The `JRootPane` instance that manages the content pane and optional menu bar for this internal frame, as well as the glass pane.
  `protected boolean`
  `rootPaneCheckingEnabled`
  If true then calls to `add` and `setLayout` will be forwarded to the `contentPane`.
  `protected String`
  `title`
  The title displayed in this internal frame's title bar.
  `static final String`
  `TITLE_PROPERTY`
  Bound property name.

  ### Fields declared in class javax.swing.JComponent

  `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

  ### Fields declared in class java.awt.Component

  `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

  ### Fields declared in interface java.awt.image.ImageObserver

  `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  ### Fields declared in interface javax.swing.WindowConstants

  `DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JInternalFrame()`
  Creates a non-resizable, non-closable, non-maximizable, non-iconifiable `JInternalFrame` with no title.
  `JInternalFrame(String title)`
  Creates a non-resizable, non-closable, non-maximizable, non-iconifiable `JInternalFrame` with the specified title.
  `JInternalFrame(String title, boolean resizable)`
  Creates a non-closable, non-maximizable, non-iconifiable `JInternalFrame` with the specified title and resizability.
  `JInternalFrame(String title, boolean resizable, boolean closable)`
  Creates a non-maximizable, non-iconifiable `JInternalFrame` with the specified title, resizability, and closability.
  `JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable)`
  Creates a non-iconifiable `JInternalFrame` with the specified title, resizability, closability, and maximizability.
  `JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)`
  Creates a `JInternalFrame` with the specified title, resizability, closability, maximizability, and iconifiability.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `addImpl(Component comp, Object constraints, int index)`
  Adds the specified child `Component`.
  `void`
  `addInternalFrameListener(InternalFrameListener l)`
  Adds the specified listener to receive internal frame events from this internal frame.
  `protected JRootPane`
  `createRootPane()`
  Called by the constructor to set up the `JRootPane`.
  `void`
  `dispose()`
  Makes this internal frame invisible, unselected, and closed.
  `void`
  `doDefaultCloseAction()`
  Fires an `INTERNAL_FRAME_CLOSING` event and then performs the action specified by the internal frame's default close operation.
  `protected void`
  `fireInternalFrameEvent(int id)`
  Fires an internal frame event.
  `AccessibleContext`
  `getAccessibleContext()`
  Gets the `AccessibleContext` associated with this `JInternalFrame`.
  `Container`
  `getContentPane()`
  Returns the content pane for this internal frame.
  `int`
  `getDefaultCloseOperation()`
  Returns the default operation that occurs when the user initiates a "close" on this internal frame.
  `JInternalFrame.JDesktopIcon`
  `getDesktopIcon()`
  Returns the `JDesktopIcon` used when this `JInternalFrame` is iconified.
  `JDesktopPane`
  `getDesktopPane()`
  Convenience method that searches the ancestor hierarchy for a `JDesktop` instance.
  `final Container`
  `getFocusCycleRootAncestor()`
  Always returns `null` because `JInternalFrame`s must always be roots of a focus traversal cycle.
  `Component`
  `getFocusOwner()`
  If this `JInternalFrame` is active, returns the child that has focus.
  `Icon`
  `getFrameIcon()`
  Returns the image displayed in the title bar of this internal frame (usually in the top-left corner).
  `Component`
  `getGlassPane()`
  Returns the glass pane for this internal frame.
  `InternalFrameListener[]`
  `getInternalFrameListeners()`
  Returns an array of all the `InternalFrameListener`s added to this `JInternalFrame` with `addInternalFrameListener`.
  `JMenuBar`
  `getJMenuBar()`
  Returns the current `JMenuBar` for this `JInternalFrame`, or `null` if no menu bar has been set.
  `Cursor`
  `getLastCursor()`
  Returns the last `Cursor` that was set by the `setCursor` method that is not a resizable `Cursor`.
  `int`
  `getLayer()`
  Convenience method for getting the layer attribute of this component.
  `JLayeredPane`
  `getLayeredPane()`
  Returns the layered pane for this internal frame.
  `JMenuBar`
  `getMenuBar()`
  Deprecated.
  As of Swing version 1.0.3, replaced by `getJMenuBar()`.
  `Component`
  `getMostRecentFocusOwner()`
  Returns the child component of this `JInternalFrame` that will receive the focus when this `JInternalFrame` is selected.
  `Rectangle`
  `getNormalBounds()`
  If the `JInternalFrame` is not in maximized state, returns `getBounds()`; otherwise, returns the bounds that the `JInternalFrame` would be restored to.
  `JRootPane`
  `getRootPane()`
  Returns the `rootPane` object for this internal frame.
  `String`
  `getTitle()`
  Returns the title of the `JInternalFrame`.
  `InternalFrameUI`
  `getUI()`
  Returns the look-and-feel object that renders this component.
  `String`
  `getUIClassID()`
  Returns the name of the look-and-feel class that renders this component.
  `final String`
  `getWarningString()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  since JDK 24
  `void`
  `hide()`
  `boolean`
  `isClosable()`
  Returns whether this `JInternalFrame` can be closed by some user action.
  `boolean`
  `isClosed()`
  Returns whether this `JInternalFrame` is currently closed.
  `final boolean`
  `isFocusCycleRoot()`
  Always returns `true` because all `JInternalFrame`s must be roots of a focus traversal cycle.
  `boolean`
  `isIcon()`
  Returns whether the `JInternalFrame` is currently iconified.
  `boolean`
  `isIconifiable()`
  Gets the `iconable` property, which by default is `false`.
  `boolean`
  `isMaximizable()`
  Gets the value of the `maximizable` property.
  `boolean`
  `isMaximum()`
  Returns whether the `JInternalFrame` is currently maximized.
  `boolean`
  `isResizable()`
  Returns whether the `JInternalFrame` can be resized by some user action.
  `protected boolean`
  `isRootPaneCheckingEnabled()`
  Returns whether calls to `add` and `setLayout` are forwarded to the `contentPane`.
  `boolean`
  `isSelected()`
  Returns whether the `JInternalFrame` is the currently "selected" or active frame.
  `void`
  `moveToBack()`
  Convenience method that moves this component to position -1 if its parent is a `JLayeredPane`.
  `void`
  `moveToFront()`
  Convenience method that moves this component to position 0 if its parent is a `JLayeredPane`.
  `void`
  `pack()`
  Causes subcomponents of this `JInternalFrame` to be laid out at their preferred size.
  `protected void`
  `paintComponent(Graphics g)`
  Overridden to allow optimized painting when the internal frame is being dragged.
  `protected String`
  `paramString()`
  Returns a string representation of this `JInternalFrame`.
  `void`
  `remove(Component comp)`
  Removes the specified component from the container.
  `void`
  `removeInternalFrameListener(InternalFrameListener l)`
  Removes the specified internal frame listener so that it no longer receives internal frame events from this internal frame.
  `void`
  `reshape(int x, int y, int width, int height)`
  Moves and resizes this component.
  `void`
  `restoreSubcomponentFocus()`
  Requests the internal frame to restore focus to the last subcomponent that had focus.
  `void`
  `setClosable(boolean b)`
  Sets whether this `JInternalFrame` can be closed by some user action.
  `void`
  `setClosed(boolean b)`
  Closes this internal frame if the argument is `true`.
  `void`
  `setContentPane(Container c)`
  Sets this `JInternalFrame`'s `contentPane` property.
  `void`
  `setCursor(Cursor cursor)`
  Sets the cursor image to the specified cursor.
  `void`
  `setDefaultCloseOperation(int operation)`
  Sets the operation that will happen by default when the user initiates a "close" on this internal frame.
  `void`
  `setDesktopIcon(JInternalFrame.JDesktopIcon d)`
  Sets the `JDesktopIcon` associated with this `JInternalFrame`.
  `final void`
  `setFocusCycleRoot(boolean focusCycleRoot)`
  Does nothing because `JInternalFrame`s must always be roots of a focus traversal cycle.
  `void`
  `setFrameIcon(Icon icon)`
  Sets an image to be displayed in the titlebar of this internal frame (usually in the top-left corner).
  `void`
  `setGlassPane(Component glass)`
  Sets this `JInternalFrame`'s `glassPane` property.
  `void`
  `setIcon(boolean b)`
  Iconifies or de-iconifies this internal frame, if the look and feel supports iconification.
  `void`
  `setIconifiable(boolean b)`
  Sets the `iconable` property, which must be `true` for the user to be able to make the `JInternalFrame` an icon.
  `void`
  `setJMenuBar(JMenuBar m)`
  Sets the `menuBar` property for this `JInternalFrame`.
  `void`
  `setLayer(int layer)`
  Convenience method for setting the layer attribute of this component.
  `void`
  `setLayer(Integer layer)`
  Convenience method for setting the layer attribute of this component.
  `void`
  `setLayeredPane(JLayeredPane layered)`
  Sets this `JInternalFrame`'s `layeredPane` property.
  `void`
  `setLayout(LayoutManager manager)`
  Ensures that, by default, the layout of this component cannot be set.
  `void`
  `setMaximizable(boolean b)`
  Sets the `maximizable` property, which determines whether the `JInternalFrame` can be maximized by some user action.
  `void`
  `setMaximum(boolean b)`
  Maximizes and restores this internal frame.
  `void`
  `setMenuBar(JMenuBar m)`
  Deprecated.
  As of Swing version 1.0.3 replaced by `setJMenuBar(JMenuBar m)`.
  `void`
  `setNormalBounds(Rectangle r)`
  Sets the normal bounds for this internal frame, the bounds that this internal frame would be restored to from its maximized state.
  `void`
  `setResizable(boolean b)`
  Sets whether the `JInternalFrame` can be resized by some user action.
  `protected void`
  `setRootPane(JRootPane root)`
  Sets the `rootPane` property for this `JInternalFrame`.
  `protected void`
  `setRootPaneCheckingEnabled(boolean enabled)`
  Sets whether calls to `add` and `setLayout` are forwarded to the `contentPane`.
  `void`
  `setSelected(boolean selected)`
  Selects or deselects the internal frame if it's showing.
  `void`
  `setTitle(String title)`
  Sets the `JInternalFrame` title.
  `void`
  `setUI(InternalFrameUI ui)`
  Sets the UI delegate for this `JInternalFrame`.
  `void`
  `show()`
  If the internal frame is not visible, brings the internal frame to the front, makes it visible, and attempts to select it.
  `void`
  `toBack()`
  Sends this internal frame to the back.
  `void`
  `toFront()`
  Brings this internal frame to the front.
  `void`
  `updateUI()`
  Notification from the `UIManager` that the look and feel has changed.

  ### Methods declared in class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

  ### Methods declared in class java.awt.Container

  `add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree`

  ### Methods declared in class java.awt.Component

  `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### rootPane

    protected JRootPane rootPane
    The `JRootPane` instance that manages the content pane and optional menu bar for this internal frame, as well as the glass pane.
    See Also:
      - `JRootPane`
      - `RootPaneContainer`

  - ### rootPaneCheckingEnabled

    protected boolean rootPaneCheckingEnabled
    If true then calls to `add` and `setLayout` will be forwarded to the `contentPane`. This is initially false, but is set to true when the `JInternalFrame` is constructed.
    See Also:
      - `isRootPaneCheckingEnabled()`
      - `setRootPaneCheckingEnabled(boolean)`
      - `RootPaneContainer`

  - ### closable

    protected boolean closable
    The frame can be closed.

  - ### isClosed

    protected boolean isClosed
    The frame has been closed.

  - ### maximizable

    protected boolean maximizable
    The frame can be expanded to the size of the desktop pane.

  - ### isMaximum

    protected boolean isMaximum
    The frame has been expanded to its maximum size.
    See Also:
      - `maximizable`

  - ### iconable

    protected boolean iconable
    The frame can "iconified" (shrunk down and displayed as an icon-image).
    See Also:
      - `JInternalFrame.JDesktopIcon`
      - `setIconifiable(boolean)`

  - ### isIcon

    protected boolean isIcon
    The frame has been iconified.
    See Also:
      - `isIcon()`

  - ### resizable

    protected boolean resizable
    The frame's size can be changed.

  - ### isSelected

    protected boolean isSelected
    The frame is currently selected.

  - ### frameIcon

    protected Icon frameIcon
    The icon shown in the top-left corner of this internal frame.

  - ### title

    protected String title
    The title displayed in this internal frame's title bar.

  - ### desktopIcon

    protected JInternalFrame.JDesktopIcon desktopIcon
    The icon that is displayed when this internal frame is iconified. Subclassers must ensure this is set to a non-null value during construction and not subsequently set this to null.
    See Also:
      - `iconable`

  - ### CONTENT_PANE_PROPERTY

    public static final String CONTENT_PANE_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### MENU_BAR_PROPERTY

    public static final String MENU_BAR_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### TITLE_PROPERTY

    public static final String TITLE_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### LAYERED_PANE_PROPERTY

    public static final String LAYERED_PANE_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### ROOT_PANE_PROPERTY

    public static final String ROOT_PANE_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### GLASS_PANE_PROPERTY

    public static final String GLASS_PANE_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### FRAME_ICON_PROPERTY

    public static final String FRAME_ICON_PROPERTY
    Bound property name.
    See Also:
      - Constant Field Values

  - ### IS_SELECTED_PROPERTY

    public static final String IS_SELECTED_PROPERTY
    Constrained property name indicated that this frame has selected status.
    See Also:
      - Constant Field Values

  - ### IS_CLOSED_PROPERTY

    public static final String IS_CLOSED_PROPERTY
    Constrained property name indicating that the internal frame is closed.
    See Also:
      - Constant Field Values

  - ### IS_MAXIMUM_PROPERTY

    public static final String IS_MAXIMUM_PROPERTY
    Constrained property name indicating that the internal frame is maximized.
    See Also:
      - Constant Field Values

  - ### IS_ICON_PROPERTY

    public static final String IS_ICON_PROPERTY
    Constrained property name indicating that the internal frame is iconified.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### JInternalFrame

    public JInternalFrame()
    Creates a non-resizable, non-closable, non-maximizable, non-iconifiable `JInternalFrame` with no title.

  - ### JInternalFrame

    public JInternalFrame(String title)
    Creates a non-resizable, non-closable, non-maximizable, non-iconifiable `JInternalFrame` with the specified title. Note that passing in a `null` `title` results in unspecified behavior and possibly an exception.
    Parameters:
      `title` - the non-`null` `String` to display in the title bar

  - ### JInternalFrame

    public JInternalFrame(String title, boolean resizable)
    Creates a non-closable, non-maximizable, non-iconifiable `JInternalFrame` with the specified title and resizability.
    Parameters:
      `title` - the `String` to display in the title bar
      `resizable` - if `true`, the internal frame can be resized

  - ### JInternalFrame

    public JInternalFrame(String title, boolean resizable, boolean closable)
    Creates a non-maximizable, non-iconifiable `JInternalFrame` with the specified title, resizability, and closability.
    Parameters:
      `title` - the `String` to display in the title bar
      `resizable` - if `true`, the internal frame can be resized
      `closable` - if `true`, the internal frame can be closed

  - ### JInternalFrame

    public JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable)
    Creates a non-iconifiable `JInternalFrame` with the specified title, resizability, closability, and maximizability.
    Parameters:
      `title` - the `String` to display in the title bar
      `resizable` - if `true`, the internal frame can be resized
      `closable` - if `true`, the internal frame can be closed
      `maximizable` - if `true`, the internal frame can be maximized

  - ### JInternalFrame

    public JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)
    Creates a `JInternalFrame` with the specified title, resizability, closability, maximizability, and iconifiability. All `JInternalFrame` constructors use this one.
    Parameters:
      `title` - the `String` to display in the title bar
      `resizable` - if `true`, the internal frame can be resized
      `closable` - if `true`, the internal frame can be closed
      `maximizable` - if `true`, the internal frame can be maximized
      `iconifiable` - if `true`, the internal frame can be iconified

- ## Method Details

  - ### createRootPane

    protected JRootPane createRootPane()
    Called by the constructor to set up the `JRootPane`.
    Returns:
      a new `JRootPane`
    See Also:
      - `JRootPane`

  - ### getUI

    public InternalFrameUI getUI()
    Returns the look-and-feel object that renders this component.
    Overrides:
      `getUI` in class `JComponent`
    Returns:
      the `InternalFrameUI` object that renders this component

  - ### setUI

    @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component's LookAndFeel.") public void setUI(InternalFrameUI ui)
    Sets the UI delegate for this `JInternalFrame`.
    Parameters:
      `ui` - the UI delegate

  - ### updateUI

    public void updateUI()
    Notification from the `UIManager` that the look and feel has changed. Replaces the current UI object with the latest version from the `UIManager`.
    Overrides:
      `updateUI` in class `JComponent`
    See Also:
      - `JComponent.updateUI()`

  - ### getUIClassID

    @BeanProperty(bound=false, description="UIClassID") public String getUIClassID()
    Returns the name of the look-and-feel class that renders this component.
    Overrides:
      `getUIClassID` in class `JComponent`
    Returns:
      the string "InternalFrameUI"
    See Also:
      - `JComponent.getUIClassID()`
      - `UIDefaults.getUI(javax.swing.JComponent)`

  - ### isRootPaneCheckingEnabled

    protected boolean isRootPaneCheckingEnabled()
    Returns whether calls to `add` and `setLayout` are forwarded to the `contentPane`.
    Returns:
      true if `add` and `setLayout` are forwarded; false otherwise
    See Also:
      - `addImpl(java.awt.Component, java.lang.Object, int)`
      - `setLayout(java.awt.LayoutManager)`
      - `setRootPaneCheckingEnabled(boolean)`
      - `RootPaneContainer`

  - ### setRootPaneCheckingEnabled

    @BeanProperty(hidden=true, description="Whether the add and setLayout methods are forwarded") protected void setRootPaneCheckingEnabled(boolean enabled)
    Sets whether calls to `add` and `setLayout` are forwarded to the `contentPane`.
    Parameters:
      `enabled` - true if `add` and `setLayout` are forwarded, false if they should operate directly on the `JInternalFrame`.
    See Also:
      - `addImpl(java.awt.Component, java.lang.Object, int)`
      - `setLayout(java.awt.LayoutManager)`
      - `isRootPaneCheckingEnabled()`
      - `RootPaneContainer`

  - ### addImpl

    protected void addImpl(Component comp, Object constraints, int index)
    Adds the specified child `Component`. This method is overridden to conditionally forward calls to the `contentPane`. By default, children are added to the `contentPane` instead of the frame, refer to `RootPaneContainer` for details.
    Overrides:
      `addImpl` in class `Container`
    Parameters:
      `comp` - the component to be enhanced
      `constraints` - the constraints to be respected
      `index` - the index
    Throws:
      `IllegalArgumentException` - if `index` is invalid
      `IllegalArgumentException` - if adding the container's parent to itself
      `IllegalArgumentException` - if adding a window to a container
    See Also:
      - `setRootPaneCheckingEnabled(boolean)`
      - `RootPaneContainer`

  - ### remove

    public void remove(Component comp)
    Removes the specified component from the container. If `comp` is not a child of the `JInternalFrame` this will forward the call to the `contentPane`.
    Overrides:
      `remove` in class `Container`
    Parameters:
      `comp` - the component to be removed
    Throws:
      `NullPointerException` - if `comp` is null
    See Also:
      - `Container.add(java.awt.Component)`
      - `RootPaneContainer`

  - ### setLayout

    public void setLayout(LayoutManager manager)
    Ensures that, by default, the layout of this component cannot be set. Overridden to conditionally forward the call to the `contentPane`. Refer to `RootPaneContainer` for more information.
    Overrides:
      `setLayout` in class `Container`
    Parameters:
      `manager` - the `LayoutManager`
    See Also:
      - `setRootPaneCheckingEnabled(boolean)`

  - ### getMenuBar

    @Deprecated public JMenuBar getMenuBar()
    Deprecated.
    As of Swing version 1.0.3, replaced by `getJMenuBar()`.
    Returns the current `JMenuBar` for this `JInternalFrame`, or `null` if no menu bar has been set.
    Returns:
      the current menu bar, or `null` if none has been set

  - ### getJMenuBar

    public JMenuBar getJMenuBar()
    Returns the current `JMenuBar` for this `JInternalFrame`, or `null` if no menu bar has been set.
    Returns:
      the `JMenuBar` used by this internal frame
    See Also:
      - `setJMenuBar(javax.swing.JMenuBar)`

  - ### setMenuBar

    @Deprecated public void setMenuBar(JMenuBar m)
    Deprecated.
    As of Swing version 1.0.3 replaced by `setJMenuBar(JMenuBar m)`.
    Sets the `menuBar` property for this `JInternalFrame`.
    Parameters:
      `m` - the `JMenuBar` to use in this internal frame
    See Also:
      - `getJMenuBar()`

  - ### setJMenuBar

    @BeanProperty(preferred=true, description="The menu bar for accessing pulldown menus from this internal frame.") public void setJMenuBar(JMenuBar m)
    Sets the `menuBar` property for this `JInternalFrame`.
    Parameters:
      `m` - the `JMenuBar` to use in this internal frame
    See Also:
      - `getJMenuBar()`

  - ### getContentPane

    public Container getContentPane()
    Returns the content pane for this internal frame.
    Specified by:
      `getContentPane` in interface `RootPaneContainer`
    Returns:
      the content pane
    See Also:
      - `RootPaneContainer.setContentPane(java.awt.Container)`

  - ### setContentPane

    @BeanProperty(hidden=true, description="The client area of the internal frame where child components are normally inserted.") public void setContentPane(Container c)
    Sets this `JInternalFrame`'s `contentPane` property.
    Specified by:
      `setContentPane` in interface `RootPaneContainer`
    Parameters:
      `c` - the content pane for this internal frame
    Throws:
      `IllegalComponentStateException` - (a runtime exception) if the content pane parameter is `null`
    See Also:
      - `RootPaneContainer.getContentPane()`

  - ### getLayeredPane

    public JLayeredPane getLayeredPane()
    Returns the layered pane for this internal frame.
    Specified by:
      `getLayeredPane` in interface `RootPaneContainer`
    Returns:
      a `JLayeredPane` object
    See Also:
      - `RootPaneContainer.setLayeredPane(javax.swing.JLayeredPane)`
      - `RootPaneContainer.getLayeredPane()`

  - ### setLayeredPane

    @BeanProperty(hidden=true, description="The pane which holds the various desktop layers.") public void setLayeredPane(JLayeredPane layered)
    Sets this `JInternalFrame`'s `layeredPane` property.
    Specified by:
      `setLayeredPane` in interface `RootPaneContainer`
    Parameters:
      `layered` - the `JLayeredPane` for this internal frame
    Throws:
      `IllegalComponentStateException` - (a runtime exception) if the layered pane parameter is `null`
    See Also:
      - `RootPaneContainer.setLayeredPane(javax.swing.JLayeredPane)`

  - ### getGlassPane

    public Component getGlassPane()
    Returns the glass pane for this internal frame.
    Specified by:
      `getGlassPane` in interface `RootPaneContainer`
    Returns:
      the glass pane
    See Also:
      - `RootPaneContainer.setGlassPane(java.awt.Component)`

  - ### setGlassPane

    @BeanProperty(hidden=true, description="A transparent pane used for menu rendering.") public void setGlassPane(Component glass)
    Sets this `JInternalFrame`'s `glassPane` property.
    Specified by:
      `setGlassPane` in interface `RootPaneContainer`
    Parameters:
      `glass` - the glass pane for this internal frame
    See Also:
      - `RootPaneContainer.getGlassPane()`

  - ### getRootPane

    @BeanProperty(hidden=true, description="The root pane used by this internal frame.") public JRootPane getRootPane()
    Returns the `rootPane` object for this internal frame.
    Specified by:
      `getRootPane` in interface `RootPaneContainer`
    Overrides:
      `getRootPane` in class `JComponent`
    Returns:
      the `rootPane` property
    See Also:
      - `RootPaneContainer.getRootPane()`

  - ### setRootPane

    protected void setRootPane(JRootPane root)
    Sets the `rootPane` property for this `JInternalFrame`. This method is called by the constructor.
    Parameters:
      `root` - the new `JRootPane` object

  - ### setClosable

    @BeanProperty(preferred=true, description="Indicates whether this internal frame can be closed.") public void setClosable(boolean b)
    Sets whether this `JInternalFrame` can be closed by some user action.
    Parameters:
      `b` - a boolean value, where `true` means this internal frame can be closed

  - ### isClosable

    public boolean isClosable()
    Returns whether this `JInternalFrame` can be closed by some user action.
    Returns:
      `true` if this internal frame can be closed

  - ### isClosed

    public boolean isClosed()
    Returns whether this `JInternalFrame` is currently closed.
    Returns:
      `true` if this internal frame is closed, `false` otherwise

  - ### setClosed

    @BeanProperty(description="Indicates whether this internal frame has been closed.") public void setClosed(boolean b) throws PropertyVetoException
    Closes this internal frame if the argument is `true`. Do not invoke this method with a `false` argument; the result of invoking `setClosed(false)` is unspecified.

    If the internal frame is already closed, this method does nothing and returns immediately. Otherwise, this method begins by firing an `INTERNAL_FRAME_CLOSING` event. Then this method sets the `closed` property to `true` unless a listener vetoes the property change. This method finishes by making the internal frame invisible and unselected, and then firing an `INTERNAL_FRAME_CLOSED` event.

    Note: To reuse an internal frame that has been closed, you must add it to a container (even if you never removed it from its previous container). Typically, this container will be the `JDesktopPane` that previously contained the internal frame.

    Parameters:
      `b` - must be `true`
    Throws:
      `PropertyVetoException` - when the attempt to set the property is vetoed by the `JInternalFrame`
    See Also:
      - `isClosed()`
      - `setDefaultCloseOperation(int)`
      - `dispose()`
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSING`

  - ### setResizable

    @BeanProperty(preferred=true, description="Determines whether this internal frame can be resized by the user.") public void setResizable(boolean b)
    Sets whether the `JInternalFrame` can be resized by some user action.
    Parameters:
      `b` - a boolean, where `true` means this internal frame can be resized

  - ### isResizable

    public boolean isResizable()
    Returns whether the `JInternalFrame` can be resized by some user action.
    Returns:
      `true` if this internal frame can be resized, `false` otherwise

  - ### setIconifiable

    @BeanProperty(preferred=true, description="Determines whether this internal frame can be iconified.") public void setIconifiable(boolean b)
    Sets the `iconable` property, which must be `true` for the user to be able to make the `JInternalFrame` an icon. Some look and feels might not implement iconification; they will ignore this property.
    Parameters:
      `b` - a boolean, where `true` means this internal frame can be iconified

  - ### isIconifiable

    public boolean isIconifiable()
    Gets the `iconable` property, which by default is `false`.
    Returns:
      the value of the `iconable` property.
    See Also:
      - `setIconifiable(boolean)`

  - ### isIcon

    public boolean isIcon()
    Returns whether the `JInternalFrame` is currently iconified.
    Returns:
      `true` if this internal frame is iconified

  - ### setIcon

    @BeanProperty(description="The image displayed when this internal frame is minimized.") public void setIcon(boolean b) throws PropertyVetoException
    Iconifies or de-iconifies this internal frame, if the look and feel supports iconification. If the internal frame's state changes to iconified, this method fires an `INTERNAL_FRAME_ICONIFIED` event. If the state changes to de-iconified, an `INTERNAL_FRAME_DEICONIFIED` event is fired.
    Parameters:
      `b` - a boolean, where `true` means to iconify this internal frame and `false` means to de-iconify it
    Throws:
      `PropertyVetoException` - when the attempt to set the property is vetoed by the `JInternalFrame`
    See Also:
      - `InternalFrameEvent.INTERNAL_FRAME_ICONIFIED`
      - `InternalFrameEvent.INTERNAL_FRAME_DEICONIFIED`

  - ### setMaximizable

    @BeanProperty(preferred=true, description="Determines whether this internal frame can be maximized.") public void setMaximizable(boolean b)
    Sets the `maximizable` property, which determines whether the `JInternalFrame` can be maximized by some user action. Some look and feels might not support maximizing internal frames; they will ignore this property.
    Parameters:
      `b` - `true` to specify that this internal frame should be maximizable; `false` to specify that it should not be

  - ### isMaximizable

    public boolean isMaximizable()
    Gets the value of the `maximizable` property.
    Returns:
      the value of the `maximizable` property
    See Also:
      - `setMaximizable(boolean)`

  - ### isMaximum

    public boolean isMaximum()
    Returns whether the `JInternalFrame` is currently maximized.
    Returns:
      `true` if this internal frame is maximized, `false` otherwise

  - ### setMaximum

    @BeanProperty(description="Indicates whether this internal frame is maximized.") public void setMaximum(boolean b) throws PropertyVetoException
    Maximizes and restores this internal frame. A maximized frame is resized to fully fit the `JDesktopPane` area associated with the `JInternalFrame`. A restored frame's size is set to the `JInternalFrame`'s actual size.
    Parameters:
      `b` - a boolean, where `true` maximizes this internal frame and `false` restores it
    Throws:
      `PropertyVetoException` - when the attempt to set the property is vetoed by the `JInternalFrame`

  - ### getTitle

    public String getTitle()
    Returns the title of the `JInternalFrame`.
    Returns:
      a `String` containing this internal frame's title
    See Also:
      - `setTitle(java.lang.String)`

  - ### setTitle

    @BeanProperty(preferred=true, description="The text displayed in the title bar.") public void setTitle(String title)
    Sets the `JInternalFrame` title. `title` may have a `null` value.
    Parameters:
      `title` - the `String` to display in the title bar
    See Also:
      - `getTitle()`

  - ### setSelected

    @BeanProperty(description="Indicates whether this internal frame is currently the active frame.") public void setSelected(boolean selected) throws PropertyVetoException
    Selects or deselects the internal frame if it's showing. A `JInternalFrame` normally draws its title bar differently if it is the selected frame, which indicates to the user that this internal frame has the focus. When this method changes the state of the internal frame from deselected to selected, it fires an `InternalFrameEvent.INTERNAL_FRAME_ACTIVATED` event. If the change is from selected to deselected, an `InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED` event is fired.
    Parameters:
      `selected` - a boolean, where `true` means this internal frame should become selected (currently active) and `false` means it should become deselected
    Throws:
      `PropertyVetoException` - when the attempt to set the property is vetoed by the `JInternalFrame`
    See Also:
      - `Component.isShowing()`
      - `InternalFrameEvent.INTERNAL_FRAME_ACTIVATED`
      - `InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED`

  - ### isSelected

    public boolean isSelected()
    Returns whether the `JInternalFrame` is the currently "selected" or active frame.
    Returns:
      `true` if this internal frame is currently selected (active)
    See Also:
      - `setSelected(boolean)`

  - ### setFrameIcon

    @BeanProperty(description="The icon shown in the top-left corner of this internal frame.") public void setFrameIcon(Icon icon)
    Sets an image to be displayed in the titlebar of this internal frame (usually in the top-left corner). Some look and feels might not support displaying an icon in the titlebar. This image is not the `desktopIcon` object, which is the image displayed in the `JDesktop` when this internal frame is iconified. Passing `null` to this function is valid, but the look and feel can choose the appropriate behavior for that situation, such as displaying no icon or a default icon for the look and feel.
    Parameters:
      `icon` - the `Icon` to display in the title bar
    See Also:
      - `getFrameIcon()`

  - ### getFrameIcon

    public Icon getFrameIcon()
    Returns the image displayed in the title bar of this internal frame (usually in the top-left corner).
    Returns:
      the `Icon` displayed in the title bar
    See Also:
      - `setFrameIcon(javax.swing.Icon)`

  - ### moveToFront

    public void moveToFront()
    Convenience method that moves this component to position 0 if its parent is a `JLayeredPane`.

  - ### moveToBack

    public void moveToBack()
    Convenience method that moves this component to position -1 if its parent is a `JLayeredPane`.

  - ### getLastCursor

    @BeanProperty(bound=false) public Cursor getLastCursor()
    Returns the last `Cursor` that was set by the `setCursor` method that is not a resizable `Cursor`.
    Returns:
      the last non-resizable `Cursor`
    Since:
      1.6

  - ### setCursor

    public void setCursor(Cursor cursor)
    Sets the cursor image to the specified cursor. This cursor image is displayed when the `contains` method for this component returns true for the current cursor location, and this Component is visible, displayable, and enabled. Setting the cursor of a `Container` causes that cursor to be displayed within all of the container's subcomponents, except for those that have a non-`null` cursor.

    The method may have no visual effect if the Java platform implementation and/or the native system do not support changing the mouse cursor shape.

    Overrides:
      `setCursor` in class `Component`
    Parameters:
      `cursor` - One of the constants defined by the `Cursor` class; if this parameter is `null` then this component will inherit the cursor of its parent
    Since:
      1.6
    See Also:
      - `Component.isEnabled()`
      - `Component.isShowing()`
      - `Component.getCursor()`
      - `Component.contains(int, int)`
      - `Toolkit.createCustomCursor(java.awt.Image, java.awt.Point, java.lang.String)`
      - `Cursor`

  - ### setLayer

    @BeanProperty(bound=false, expert=true, description="Specifies what desktop layer is used.") public void setLayer(Integer layer)
    Convenience method for setting the layer attribute of this component.
    Parameters:
      `layer` - an `Integer` object specifying this frame's desktop layer
    Throws:
      `NullPointerException` - if `layer` is `null`
    See Also:
      - `JLayeredPane`

  - ### setLayer

    @BeanProperty(bound=false, expert=true, description="Specifies what desktop layer is used.") public void setLayer(int layer)
    Convenience method for setting the layer attribute of this component. The method `setLayer(Integer)` should be used for layer values predefined in `JLayeredPane`. When using `setLayer(int)`, care must be taken not to accidentally clash with those values.
    Parameters:
      `layer` - an integer specifying this internal frame's desktop layer
    Since:
      1.3
    See Also:
      - `setLayer(Integer)`
      - `JLayeredPane`

  - ### getLayer

    public int getLayer()
    Convenience method for getting the layer attribute of this component.
    Returns:
      an `Integer` object specifying this frame's desktop layer
    See Also:
      - `JLayeredPane`

  - ### getDesktopPane

    @BeanProperty(bound=false) public JDesktopPane getDesktopPane()
    Convenience method that searches the ancestor hierarchy for a `JDesktop` instance. If `JInternalFrame` finds none, the `desktopIcon` tree is searched.
    Returns:
      the `JDesktopPane` this internal frame belongs to, or `null` if none is found

  - ### setDesktopIcon

    @BeanProperty(description="The icon shown when this internal frame is minimized.") public void setDesktopIcon(JInternalFrame.JDesktopIcon d)
    Sets the `JDesktopIcon` associated with this `JInternalFrame`.
    Parameters:
      `d` - the `JDesktopIcon` to display on the desktop
    Throws:
      `NullPointerException` - if the `d` is `null`
    See Also:
      - `getDesktopIcon()`

  - ### getDesktopIcon

    public JInternalFrame.JDesktopIcon getDesktopIcon()
    Returns the `JDesktopIcon` used when this `JInternalFrame` is iconified.
    Returns:
      the `JDesktopIcon` displayed on the desktop
    See Also:
      - `setDesktopIcon(javax.swing.JInternalFrame.JDesktopIcon)`

  - ### getNormalBounds

    public Rectangle getNormalBounds()
    If the `JInternalFrame` is not in maximized state, returns `getBounds()`; otherwise, returns the bounds that the `JInternalFrame` would be restored to.
    Returns:
      a `Rectangle` containing the bounds of this frame when in the normal state
    Since:
      1.3

  - ### setNormalBounds

    public void setNormalBounds(Rectangle r)
    Sets the normal bounds for this internal frame, the bounds that this internal frame would be restored to from its maximized state. This method is intended for use only by desktop managers.
    Parameters:
      `r` - the bounds that this internal frame should be restored to
    Since:
      1.3

  - ### getFocusOwner

    public Component getFocusOwner()
    If this `JInternalFrame` is active, returns the child that has focus. Otherwise, returns `null`.
    Returns:
      the component with focus, or `null` if no children have focus
    Since:
      1.3

  - ### getMostRecentFocusOwner

    @BeanProperty(bound=false) public Component getMostRecentFocusOwner()
    Returns the child component of this `JInternalFrame` that will receive the focus when this `JInternalFrame` is selected. If this `JInternalFrame` is currently selected, this method returns the same component as the `getFocusOwner` method. If this `JInternalFrame` is not selected, then the child component that most recently requested focus will be returned. If no child component has ever requested focus, then this `JInternalFrame`'s initial focusable component is returned. If no such child exists, then this `JInternalFrame`'s default component to focus is returned.
    Returns:
      the child component that will receive focus when this `JInternalFrame` is selected
    Since:
      1.4
    See Also:
      - `getFocusOwner()`
      - `isSelected`

  - ### restoreSubcomponentFocus

    public void restoreSubcomponentFocus()
    Requests the internal frame to restore focus to the last subcomponent that had focus. This is used by the UI when the user selected this internal frame -- for example, by clicking on the title bar.
    Since:
      1.3

  - ### reshape

    public void reshape(int x, int y, int width, int height)
    Moves and resizes this component. Unlike other components, this implementation also forces re-layout, so that frame decorations such as the title bar are always redisplayed.
    Overrides:
      `reshape` in class `JComponent`
    Parameters:
      `x` - an integer giving the component's new horizontal position measured in pixels from the left of its container
      `y` - an integer giving the component's new vertical position, measured in pixels from the bottom of its container
      `width` - an integer giving the component's new width in pixels
      `height` - an integer giving the component's new height in pixels
    See Also:
      - `Component.setBounds(int, int, int, int)`

  - ### addInternalFrameListener

    public void addInternalFrameListener(InternalFrameListener l)
    Adds the specified listener to receive internal frame events from this internal frame.
    Parameters:
      `l` - the internal frame listener

  - ### removeInternalFrameListener

    public void removeInternalFrameListener(InternalFrameListener l)
    Removes the specified internal frame listener so that it no longer receives internal frame events from this internal frame.
    Parameters:
      `l` - the internal frame listener

  - ### getInternalFrameListeners

    @BeanProperty(bound=false) public InternalFrameListener[] getInternalFrameListeners()
    Returns an array of all the `InternalFrameListener`s added to this `JInternalFrame` with `addInternalFrameListener`.
    Returns:
      all of the `InternalFrameListener`s added or an empty array if no listeners have been added
    Since:
      1.4
    See Also:
      - `addInternalFrameListener(javax.swing.event.InternalFrameListener)`

  - ### fireInternalFrameEvent

    protected void fireInternalFrameEvent(int id)
    Fires an internal frame event.
    Parameters:
      `id` - the type of the event being fired; one of the following:
      - `InternalFrameEvent.INTERNAL_FRAME_OPENED`
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSING`
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSED`
      - `InternalFrameEvent.INTERNAL_FRAME_ICONIFIED`
      - `InternalFrameEvent.INTERNAL_FRAME_DEICONIFIED`
      - `InternalFrameEvent.INTERNAL_FRAME_ACTIVATED`
      - `InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED`
      If the event type is not one of the above, nothing happens.

  - ### doDefaultCloseAction

    public void doDefaultCloseAction()
    Fires an `INTERNAL_FRAME_CLOSING` event and then performs the action specified by the internal frame's default close operation. This method is typically invoked by the look-and-feel-implemented action handler for the internal frame's close button.
    Since:
      1.3
    See Also:
      - `setDefaultCloseOperation(int)`
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSING`

  - ### setDefaultCloseOperation

    public void setDefaultCloseOperation(int operation)
    Sets the operation that will happen by default when the user initiates a "close" on this internal frame. The possible choices are:
    `DO_NOTHING_ON_CLOSE`
      Do nothing. This requires the program to handle the operation in the `internalFrameClosing` method of a registered `InternalFrameListener` object.
    `HIDE_ON_CLOSE`
      Automatically make the internal frame invisible.
    `DISPOSE_ON_CLOSE`
      Automatically dispose of the internal frame.

    The default value is `DISPOSE_ON_CLOSE`. Before performing the specified close operation, the internal frame fires an `INTERNAL_FRAME_CLOSING` event.

    Parameters:
      `operation` - one of the following constants defined in `javax.swing.WindowConstants` (an interface implemented by `JInternalFrame`): `DO_NOTHING_ON_CLOSE`, `HIDE_ON_CLOSE`, or `DISPOSE_ON_CLOSE`
    See Also:
      - `addInternalFrameListener(javax.swing.event.InternalFrameListener)`
      - `getDefaultCloseOperation()`
      - `JComponent.setVisible(boolean)`
      - `dispose()`
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSING`

  - ### getDefaultCloseOperation

    public int getDefaultCloseOperation()
    Returns the default operation that occurs when the user initiates a "close" on this internal frame.
    Returns:
      the operation that will occur when the user closes the internal frame
    See Also:
      - `setDefaultCloseOperation(int)`

  - ### pack

    public void pack()
    Causes subcomponents of this `JInternalFrame` to be laid out at their preferred size. Internal frames that are iconized or maximized are first restored and then packed. If the internal frame is unable to be restored its state is not changed and will not be packed.
    See Also:
      - `Window.pack()`

  - ### show

    public void show()
    If the internal frame is not visible, brings the internal frame to the front, makes it visible, and attempts to select it. The first time the internal frame is made visible, this method also fires an `INTERNAL_FRAME_OPENED` event. This method does nothing if the internal frame is already visible. Invoking this method has the same result as invoking `setVisible(true)`.
    Overrides:
      `show` in class `Component`
    See Also:
      - `moveToFront()`
      - `setSelected(boolean)`
      - `InternalFrameEvent.INTERNAL_FRAME_OPENED`
      - `JComponent.setVisible(boolean)`

  - ### hide

    public void hide()
    Description copied from class: `JComponent`
    Overrides:
      `hide` in class `JComponent`

  - ### dispose

    public void dispose()
    Makes this internal frame invisible, unselected, and closed. If the frame is not already closed, this method fires an `INTERNAL_FRAME_CLOSED` event. The results of invoking this method are similar to `setClosed(true)`, but `dispose` always succeeds in closing the internal frame and does not fire an `INTERNAL_FRAME_CLOSING` event.
    See Also:
      - `InternalFrameEvent.INTERNAL_FRAME_CLOSED`
      - `JComponent.setVisible(boolean)`
      - `setSelected(boolean)`
      - `setClosed(boolean)`

  - ### toFront

    public void toFront()
    Brings this internal frame to the front. Places this internal frame at the top of the stacking order and makes the corresponding adjustment to other visible internal frames.
    See Also:
      - `Window.toFront()`
      - `moveToFront()`

  - ### toBack

    public void toBack()
    Sends this internal frame to the back. Places this internal frame at the bottom of the stacking order and makes the corresponding adjustment to other visible internal frames.
    See Also:
      - `Window.toBack()`
      - `moveToBack()`

  - ### setFocusCycleRoot

    public final void setFocusCycleRoot(boolean focusCycleRoot)
    Does nothing because `JInternalFrame`s must always be roots of a focus traversal cycle.
    Overrides:
      `setFocusCycleRoot` in class `Container`
    Parameters:
      `focusCycleRoot` - this value is ignored
    Since:
      1.4
    See Also:
      - `isFocusCycleRoot()`
      - `Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)`
      - `Container.getFocusTraversalPolicy()`

  - ### isFocusCycleRoot

    public final boolean isFocusCycleRoot()
    Always returns `true` because all `JInternalFrame`s must be roots of a focus traversal cycle.
    Overrides:
      `isFocusCycleRoot` in class `Container`
    Returns:
      `true`
    Since:
      1.4
    See Also:
      - `setFocusCycleRoot(boolean)`
      - `Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)`
      - `Container.getFocusTraversalPolicy()`

  - ### getFocusCycleRootAncestor

    @BeanProperty(bound=false) public final Container getFocusCycleRootAncestor()
    Always returns `null` because `JInternalFrame`s must always be roots of a focus traversal cycle.
    Overrides:
      `getFocusCycleRootAncestor` in class `Component`
    Returns:
      `null`
    Since:
      1.4
    See Also:
      - `Container.isFocusCycleRoot()`

  - ### getWarningString

    @Deprecated(since="24", forRemoval=true) @BeanProperty(bound=false) public final String getWarningString()
    Deprecated, for removal: This API element is subject to removal in a future version.
    since JDK 24
    Gets the warning string that is displayed with this internal frame. This method always returns `null`. Warning strings are no longer applicable, even to top-level windows, so this method may be removed in a future release
    Returns:
      `null`
    See Also:
      - `Window.getWarningString()`

  - ### paramString

    protected String paramString()
    Returns a string representation of this `JInternalFrame`. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be `null`.
    Overrides:
      `paramString` in class `JComponent`
    Returns:
      a string representation of this `JInternalFrame`

  - ### paintComponent

    protected void paintComponent(Graphics g)
    Overridden to allow optimized painting when the internal frame is being dragged.
    Overrides:
      `paintComponent` in class `JComponent`
    Parameters:
      `g` - the `Graphics` object to protect
    See Also:
      - `JComponent.paint(java.awt.Graphics)`
      - `ComponentUI`

  - ### getAccessibleContext

    @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
    Gets the `AccessibleContext` associated with this `JInternalFrame`. For internal frames, the `AccessibleContext` takes the form of an `AccessibleJInternalFrame` object. A new `AccessibleJInternalFrame` instance is created if necessary.
    Specified by:
      `getAccessibleContext` in interface `Accessible`
    Overrides:
      `getAccessibleContext` in class `Component`
    Returns:
      an `AccessibleJInternalFrame` that serves as the `AccessibleContext` of this `JInternalFrame`
    See Also:
      - `JInternalFrame.AccessibleJInternalFrame`