Class JPanelFrame

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

public class JPanelFrame extends JPanel implements RootPaneContainer
A JPanel subclass that has a drop shadow border and that provides a header with icon, title and tool bar.

This class can be used to replace the JInternalFrame, for use outside of a JDesktopPane. The SimpleInternalFrame is less flexible but often more usable; it avoids overlapping windows and scales well up to IDE size. Several customers have reported that they and their clients feel much better with both the appearance and the UI feel.

The SimpleInternalFrame provides the following bound properties: frameIcon, title, toolBar, content, selected.

By default the SimpleInternalFrame is in selected state. If you don't do anything, multiple simple internal frames will be displayed as selected.

Since:
1.0.1
Version:
"1.0.14" - b202111241200L
Author:
Julien SEINTURIER - Université de Toulon / CNRS LIS umr 7020 - github.com/jorigin/jcommon (contact@jorigin.org)
See Also:
  • Constructor Details

    • JPanelFrame

      public JPanelFrame(String title)
      Constructs a JPanelFrame with the specified title. The title is intended to be non-blank, or in other words should contain non-space characters.
      Parameters:
      title - the initial title
    • JPanelFrame

      public JPanelFrame(Icon icon, String title)
      Constructs a JPanelFrame with the specified icon, and title.
      Parameters:
      icon - the initial icon
      title - the initial title
    • JPanelFrame

      public JPanelFrame(String title, JToolBar bar, JComponent content)
      Constructs a JPanelFrame with the specified title, tool bar, and content panel.
      Parameters:
      title - the initial title
      bar - the initial tool bar
      content - the initial content pane
    • JPanelFrame

      public JPanelFrame(Icon icon, String title, JToolBar bar, JComponent content)
      Constructs a JPanelFrame with the specified icon, title, tool bar, and content panel.
      Parameters:
      icon - the initial icon
      title - the initial title
      bar - the initial tool bar
      content - the initial content pane
  • Method Details

    • getRootPane

      public JRootPane getRootPane()
      Return this component's single JRootPane child. A conventional implementation of this interface will have all of the other methods indirect through this one. The rootPane has two children: the glassPane and the layeredPane.
      Specified by:
      getRootPane in interface RootPaneContainer
      Overrides:
      getRootPane in class JComponent
      Returns:
      this components single JRootPane child.
      See Also:
    • setContentPane

      public void setContentPane(Container contentPane)
      The "contentPane" is the primary container for application specific components. Applications should add children to the contentPane, set its layout manager, and so on.

      The contentPane my not be null.

      Generally implemented with getRootPane().setContentPane(contentPane);

      Specified by:
      setContentPane in interface RootPaneContainer
      Parameters:
      contentPane - the Container to use for the contents of this JRootPane
      Throws:
      IllegalComponentStateException - (a runtime exception) if the content pane parameter is null
      See Also:
    • getContentPane

      public Container getContentPane()
      Returns the contentPane.
      Specified by:
      getContentPane in interface RootPaneContainer
      Returns:
      the value of the contentPane property.
      See Also:
    • setLayeredPane

      public void setLayeredPane(JLayeredPane layeredPane)
      A Container that manages the contentPane and in some cases a menu bar. The layeredPane can be used by descendants that want to add a child to the RootPaneContainer that isn't layout managed. For example an internal dialog or a drag and drop effect component.

      The layeredPane may not be null.

      Generally implemented with

          getRootPane().setLayeredPane(layeredPane);
      Specified by:
      setLayeredPane in interface RootPaneContainer
      Throws:
      IllegalComponentStateException - (a runtime exception) if the layered pane parameter is null
      See Also:
    • getLayeredPane

      public JLayeredPane getLayeredPane()
      Returns the layeredPane.
      Specified by:
      getLayeredPane in interface RootPaneContainer
      Returns:
      the value of the layeredPane property.
      See Also:
    • setGlassPane

      public void setGlassPane(Component glassPane)
      The glassPane is always the first child of the rootPane and the rootPanes layout manager ensures that it's always as big as the rootPane. By default it's transparent and not visible. It can be used to temporarily grab all keyboard and mouse input by adding listeners and then making it visible. by default it's not visible.

      The glassPane may not be null.

      Generally implemented with getRootPane().setGlassPane(glassPane);

      Specified by:
      setGlassPane in interface RootPaneContainer
      See Also:
    • getGlassPane

      public Component getGlassPane()
      Returns the glassPane.
      Specified by:
      getGlassPane in interface RootPaneContainer
      Returns:
      the value of the glassPane property.
      See Also:
    • add

      public Component add(Component comp)
      Appends the specified component to the end of this container. This is a convenience method for addImpl(java.awt.Component, java.lang.Object, int).
      Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.
      Overrides:
      add in class Container
      Parameters:
      comp - Component the component to be added
      Returns:
      Component the component argument
      See Also:
    • add

      public Component add(Component comp, int index)
      Adds the specified component to this container at the given position. This is a convenience method for addImpl(java.awt.Component, java.lang.Object, int).
      Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.
      Overrides:
      add in class Container
      Parameters:
      comp - Component the component to be added
      index - the position at which to insert the component, or -1 to append the component to the end
      Returns:
      the added component.
      See Also:
    • add

      public void add(Component comp, Object constraints)
      Adds the specified component to this container with the specified constraints to the end of this conainer. Also notifies the layout manager to add the component to the this container's layout using the specified constraints object. This is a convenience method for addImpl(java.awt.Component, java.lang.Object, int).

      Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.
      Overrides:
      add in class Container
      Parameters:
      comp - Component the component to be added
      constraints - Object an object expressing layout contraints for this
      See Also:
    • add

      public void add(Component comp, Object constraints, int index)
      Adds the specified component to this container with the specified constraints at the specified index. Also notifies the layout manager to add the component to the this container's layout using the specified constraints object. This is a convenience method for addImpl(java.awt.Component, java.lang.Object, int).

      Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.
      Overrides:
      add in class Container
      Parameters:
      comp - Component the component to be added
      constraints - Object an object expressing layout constraints for this
      index - int the position in the container's list at which to insert the component; -1 means insert at the end component
      See Also:
    • remove

      public void remove(int index)
      Removes the component, specified by index, from this container. This method also notifies the layout manager to remove the component from this container's layout via the removeLayoutComponent method.
      Overrides:
      remove in class Container
      Parameters:
      index - the index of the component to be removed
      See Also:
    • removeAll

      public void removeAll()
      Removes all the components from this container. This method also notifies the layout manager to remove the components from this container's layout via the removeLayoutComponent method.
      Overrides:
      removeAll in class Container
      See Also:
    • createRootPane

      protected void createRootPane()
      Called by the constructor methods to create the default rootPane.
    • addImpl

      protected void addImpl(Component comp, Object constraints, int index)
      Adds the specified child Component. This method is overridden to conditionally forwad 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
      See Also:
    • setJMenuBar

      public void setJMenuBar(JMenuBar menu)
      Sets the menubar for this panel frame.
      Parameters:
      menu - JMenuBar the menubar being placed in the frame
      See Also:
    • getJMenuBar

      public JMenuBar getJMenuBar()
      Returns the menubar set on this panel frame.
      Returns:
      JMenuBar the menubar for this frame
      See Also:
    • setRootPaneCheckingEnabled

      protected void setRootPaneCheckingEnabled(boolean enabled)
      Sets whether calls to add and setLayout are forwarded to the contentPane.
      Parameters:
      enabled - boolean true if add and setLayout are forwarded, false if they should operate directly on the JPanelFrame.
      See Also:
    • isRootPaneCheckingEnabled

      protected boolean isRootPaneCheckingEnabled()
      Returns whether calls to add and setLayout are forwarded to the contentPane.
      Returns:
      boolean true if add and setLayout are fowarded; false otherwise
      See Also:
    • processWindowEvent

      protected void processWindowEvent(WindowEvent e)
      Processes window events occurring on this component. Hides the window or disposes of it, as specified by the setting of the defaultCloseOperation property.
      Parameters:
      e - the window event
    • remove

      public void remove(Component comp)
      Removes the specified component from the container. If comp is not the rootPane, this will forward the call to the contentPane. This will do nothing if comp is not a child of the JFrame or contentPane.
      Overrides:
      remove in class Container
      Parameters:
      comp - Component the component to be removed
      See Also:
    • setDefaultCloseOperation

      public void setDefaultCloseOperation(int operation)
      A convenience method for setting default close operation.
      Parameters:
      operation - the operation processed. By default this method does nothing.
      See Also:
    • getDefaultCloseOperation

      public int getDefaultCloseOperation()
      A convenience method for getting default close operation. By default this method return 0.
      Returns:
      the default close operation.
    • update

      public void update(Graphics g)
      Just calls paint(g). This method was overridden to prevent an unnecessary call to clear the background.
      Overrides:
      update in class JComponent
      Parameters:
      g - the Graphics context in which to paint
      See Also:
    • setIconImage

      public void setIconImage(Image image)
      Sets the image to be displayed in the minimized icon for this frame. Not all platforms support the concept of minimizing a window.
      Parameters:
      image - the icon image to be displayed. If this parameter is null then the icon image is set to the default image, which may vary with platform.
      See Also:
    • getIconImage

      public Image getIconImage()
      Get the image that is displayed in the panel.
      Returns:
      the icon image that is displayed.
    • getFrameIcon

      public Icon getFrameIcon()
      Returns the frame's icon.
      Returns:
      the frame's icon
    • setFrameIcon

      public void setFrameIcon(Icon newIcon)
      Sets a new frame icon.
      Parameters:
      newIcon - the icon to be set
    • getTitle

      public String getTitle()
      Returns the frame's title text.
      Returns:
      String the current title text
    • setTitle

      public void setTitle(String newText)
      Sets a new title text.
      Parameters:
      newText - the title text tp be set
    • getToolBar

      public JToolBar getToolBar()
      Returns the current JToolBar, null if none has been set before.
      Returns:
      the current toolbar - if any
    • setToolBar

      public void setToolBar(JToolBar newToolBar)
      Sets a new JToolBar in the header.
      Parameters:
      newToolBar - the tool bar to be set in the header
    • getContent

      public Component getContent()
      Returns the content - null, if none has been set.
      Returns:
      the current content
    • isSelected

      public boolean isSelected()
      Answers if the panel is currently selected (or in other words active) or not. In the selected state, the header background will be rendered differently.
      Returns:
      boolean a boolean, where true means the frame is selected (currently active) and false means it is not
    • setSelected

      public void setSelected(boolean newValue)
      This panel draws its title bar differently if it is selected, which may be used to indicate to the user that this panel has the focus, or should get more attention than other simple internal frames.
      Parameters:
      newValue - a boolean, where true means the frame is selected (currently active) and false means it is not
    • updateUI

      public void updateUI()
      Updates the UI. In addition to the superclass behavior, we need to update the header component.
      Overrides:
      updateUI in class JPanel
    • getTextForeground

      protected Color getTextForeground(boolean isSelected)
      Determines and answers the header's text foreground color. Tries to lookup a special color from the L&F. In case it is absent, it uses the standard internal frame forground.
      Parameters:
      isSelected - true to lookup the active color, false for the inactive
      Returns:
      the color of the foreground text
    • getHeaderBackground

      protected Color getHeaderBackground()
      Determines and answers the header's background color. Tries to lookup a special color from the L&F. In case it is absent, it uses the standard internal frame background.
      Returns:
      the color of the header's background