org.jdesktop.swingx
Class JXHeader

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.jdesktop.swingx.JXPanel
                      extended by org.jdesktop.swingx.JXHeader
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class JXHeader
extends JXPanel

JXHeader is a simple component consisting of a title, a description, and an icon. An example of such a component can be seen on Romain Guys ProgX website

JXHeader is a simple component that is also sufficiently configurable to be usable. The description area accepts HTML conforming to version 3.2 of the HTML standard. The icon, title, and description are all configurable. JXHeader itself extends JXPanel, providing translucency and painting delegates.

If I were to reconstruct the ui shown in the above screenshot, I might do so like this:


      JXHeader header = new JXHeader();
      header.setTitle("Timing Framework Spline Editor");
      header.setDescription("Drag control points in the display to change the " +
          "shape of the spline\n" +
          "Click the Copy Code button to generate the corresponding Java code.");
      Icon icon = new ImageIcon(getClass().getResource("tools.png"));
      header.setIcon(icon);
 

Note: The HTML support doesn't exist yet. The UI delegate needs to discover whether the text supplied is HTML or not, and change the content type of the editor pane being used. The problem is that if "text/html" is always used, the font is wrong. This same situation will be found in other parts of the code (JXErrorPane, for instance), so this needs to be dealt with.

Defaults

BasicHeaderUI uses the following UI defaults:

See Also:
Serialized Form
Review status:
REVIEWED

Nested Class Summary
static class JXHeader.IconPosition
          Specifies desired location of the icon relative to the title/description text.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static String uiClassID
          JXHeader pluggable UI key HeaderUI
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JXHeader()
          Creates a new instance of JXHeader
JXHeader(String title, String description)
          Creates a new instance of JXHeader.
JXHeader(String title, String description, Icon icon)
          Creates a new instance of JXHeader.
 
Method Summary
 String getDescription()
          Gets the description.
 Font getDescriptionFont()
          Gets description font.
 Color getDescriptionForeground()
          Gets current description foreground color.
 Icon getIcon()
          Gets the icon.
 JXHeader.IconPosition getIconPosition()
          Gets current icon position.
 Dimension getPreferredSize()
          If the preferredSize has been set to a non-null value just returns it.
 String getTitle()
          Gets the title.
 Font getTitleFont()
          Gets title font.
 Color getTitleForeground()
          Gets current title foreground color.
 HeaderUI getUI()
          Returns the look and feel (L&F) object that renders this component.
 String getUIClassID()
          Returns the name of the L&F class that renders this component.
 void setDescription(String description)
          Sets the description for this header.
 void setDescriptionFont(Font font)
          Sets font for the description line of header.
 void setDescriptionForeground(Color descriptionForeground)
          Sets description foreground color.
 void setFont(Font font)
          Sets new font for both, title and description line of the header.
 void setIcon(Icon icon)
          Sets the icon to use for the header.
 void setIconPosition(JXHeader.IconPosition iconPosition)
          Sets new Icon position.
 void setTitle(String title)
          Sets the title to use.
 void setTitleFont(Font font)
          Sets new font for title.
 void setTitleForeground(Color titleForeground)
          Sets title foreground color.
 void setUI(HeaderUI ui)
          Sets the look and feel (L&F) object that renders this component.
 void updateUI()
          Notification from the UIManager that the L&F has changed.
 
Methods inherited from class org.jdesktop.swingx.JXPanel
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, isInheritAlpha, isPaintBorderInsets, paint, paintComponent, setAlpha, setBackground, setBackgroundPainter, setInheritAlpha, setPaintBorderInsets, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, paramString, setUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

uiClassID

public static final String uiClassID
JXHeader pluggable UI key HeaderUI

See Also:
Constant Field Values
Constructor Detail

JXHeader

public JXHeader()
Creates a new instance of JXHeader


JXHeader

public JXHeader(String title,
                String description)
Creates a new instance of JXHeader. PropertyChangeEvents are fired when the title and description properties are set.

Parameters:
title - specifies the title property for this JXHeader
description - specifies the description property for this JXHeader

JXHeader

public JXHeader(String title,
                String description,
                Icon icon)
Creates a new instance of JXHeader. PropertyChangeEvents are fired when the title and description properties are set.

Parameters:
title - specifies the title property for this JXHeader
description - specifies the description property for this JXHeader
icon - specifies the icon property for this JXHeader
Method Detail

getUI

public HeaderUI getUI()
Returns the look and feel (L&F) object that renders this component.

Overrides:
getUI in class JPanel
Returns:
the PanelUI object that renders this component

setUI

public void setUI(HeaderUI ui)
Sets the look and feel (L&F) object that renders this component.

Parameters:
ui - the HeaderUI L&F object
See Also:
UIDefaults.getUI(javax.swing.JComponent)

getUIClassID

public String getUIClassID()
Returns the name of the L&F class that renders this component.

Overrides:
getUIClassID in class JPanel
Returns:
the string uiClassID
See Also:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
Notification from the UIManager that the L&F has changed. Replaces the current UI object with the latest version from the UIManager.

Overrides:
updateUI in class JPanel
See Also:
JComponent.updateUI()

setTitle

public void setTitle(String title)
Sets the title to use. This may be either plain text, or a simplified version of HTML, as JLabel would use.

Parameters:
title - the Title. May be null.

getTitle

public String getTitle()
Gets the title. This may use HTML, such as that supported by JLabel (version 3.2 of the HTML spec).

Returns:
the title. May be null.

setDescription

public void setDescription(String description)
Sets the description for this header. This may use HTML, such as that supported by JLabel (version 3.2 of the HTML spec).

Parameters:
description - the description. May be null, may be HTML or plain text.

getDescription

public String getDescription()
Gets the description.

Returns:
description

setIcon

public void setIcon(Icon icon)
Sets the icon to use for the header. It is generally recommended that this be an image 64x64 pixels in size, and that the icon have no gaps at the top.

Parameters:
icon - may be null

getIcon

public Icon getIcon()
Gets the icon.

Returns:
the Icon being used. May be null.

setFont

public void setFont(Font font)
Sets new font for both, title and description line of the header.

Overrides:
setFont in class JComponent
Parameters:
font - the desired Font for this component
See Also:
JComponent.setFont(java.awt.Font)

setTitleFont

public void setTitleFont(Font font)
Sets new font for title.

Parameters:
font - New title font.

getTitleFont

public Font getTitleFont()
Gets title font.

Returns:
the Font being used. May be null.

setDescriptionFont

public void setDescriptionFont(Font font)
Sets font for the description line of header.

Parameters:
font - New description font.

getDescriptionFont

public Font getDescriptionFont()
Gets description font.

Returns:
the Font being used. May be null.

getTitleForeground

public Color getTitleForeground()
Gets current title foreground color.

Returns:
the Color used to paint title. May be null.

setTitleForeground

public void setTitleForeground(Color titleForeground)
Sets title foreground color.

Parameters:
titleForeground - the Color to be used to paint title.

getDescriptionForeground

public Color getDescriptionForeground()
Gets current description foreground color.

Returns:
the Color used to paint description. May be null.

setDescriptionForeground

public void setDescriptionForeground(Color descriptionForeground)
Sets description foreground color.

Parameters:
descriptionForeground - the Color to be used to paint description.

getIconPosition

public JXHeader.IconPosition getIconPosition()
Gets current icon position. Default is RIGHT.

Returns:
Current Icon position.

setIconPosition

public void setIconPosition(JXHeader.IconPosition iconPosition)
Sets new Icon position. Position is relative to the text. Default value is RIGHT.

Parameters:
iconPosition - new desired icon position
See Also:
getIconPosition()

getPreferredSize

public Dimension getPreferredSize()
Description copied from class: javax.swing.JComponent
If the preferredSize has been set to a non-null value just returns it. If the UI delegate's getPreferredSize method returns a non null value then return that; otherwise defer to the component's layout manager.

Overrides:
getPreferredSize in class JComponent
Returns:
the value of the preferredSize property
See Also:
JComponent.setPreferredSize(java.awt.Dimension), ComponentUI