Module java.desktop
Package javax.swing

Class 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 JInternalFrames 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, Serialized Form
    • Field Detail

      • 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
      • 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
      • 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.
      • 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 Detail

      • 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 Detail

      • 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
      • 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()
      • 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()
      • 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
      • 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​(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
      • 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
      • 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()
      • 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()
      • getWarningString

        @BeanProperty(bound=false)
        public final String getWarningString()
        Gets the warning string that is displayed with this internal frame. Since an internal frame is always secure (since it's fully contained within a window that might need a warning string) this method always returns null.
        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