public class StyledLabel
extends javax.swing.JLabel
StyledLabel
is a special JLabel which can display text in different styles. It is a component between
JLabel and JTextPane. JLabel is simple, fast but has limited features. For example, you can't use different color to
draw the text. You may argue JLabel can use HTML tag to display text in different colors. However there are two main
reasons to use StyledLabel. First of all, StyledLabel is very fast and almost as fast as JLabel with plain text. HTML
JLabel is very slow. You can see StyledLabelPerformanceDemo.java in examples\B15. StyledLabel folder to see a
performace test of HTML JLabel and StyledLabel. HTML JLabel is also buggy. See bug report at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4373575.
Sun claimed it is fixed but it is not as another user pointed it out at the end. If you run the test case provided by
original submitter, you will immediately notice the tree node disappeared when you click on the tree nodes. This bug
is actually one of the main reasons we decided to create StyledLabel. JTextPane is powerful and can display text in
different color. But in the cases like cell renderer, JTextPane is obviously an overkill.
StyledLabel sits between JLabel and JTextPane and provides a very simple and fast way to display text in different
color and style. It can also support decorations using all kinds of line styles.
All the methods on JLabel still work as before. The methods added in StyledLabel are several methods for StyleRange,
such as addStyleRange(StyleRange)
, setStyleRanges(StyleRange[])
, clearStyleRange(StyleRange)
, and clearStyleRanges()
.
This is one thing about StyleRange that you should be aware of, which could be considered as a future enhancement
item, is that the StyleRanges can't overlap with each other. For example, if you defined a StyleRange that covers
from index 0 to index 3, you can't define any other StyleRange that overlaps with the first one. If you do so, the
second StyleRange will be ignored.
We borrowed some ideas from SWT's StyledText when we designed StyledLabel, especially StyleRange concept. Saying
that, the features of the two components are not exactly the same since the purpose of the two components are quite
different.javax.swing.JLabel.AccessibleJLabel
javax.swing.JComponent.AccessibleJComponent
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
PROPERTY_IGNORE_COLOR_SETTINGS |
static java.lang.String |
PROPERTY_STYLE_RANGE |
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Constructor and Description |
---|
StyledLabel() |
StyledLabel(javax.swing.Icon image) |
StyledLabel(javax.swing.Icon image,
int horizontalAlignment) |
StyledLabel(java.lang.String text) |
StyledLabel(java.lang.String text,
javax.swing.Icon icon,
int horizontalAlignment) |
StyledLabel(java.lang.String text,
int horizontalAlignment) |
Modifier and Type | Method and Description |
---|---|
void |
addStyleRange(StyleRange styleRange)
Adds a StyleRange into this
StyledLabel . |
void |
addStyleRanges(StyleRange[] styleRanges)
Adds a list of StyleRanges into this
StyledLabel . |
void |
clearStyleRange(StyleRange styleRange)
Removes the StyleRange.
|
void |
clearStyleRanges()
Clears all the StyleRanges.
|
java.awt.Dimension |
getMaximumSize() |
int |
getMaxRows()
Gets the maximum rows possible after wrapping.
|
java.awt.Dimension |
getMinimumSize() |
int |
getMinRows()
Gets the minimum rows possible after wrapping.
|
int |
getPreferredWidth()
Gets the preferred width of the styled label.
|
int |
getRowGap()
Gets the gap pixels between rows.
|
int |
getRows()
Gets the default row count to wrap the
StyledLabel . |
StyleRange[] |
getStyleRanges()
Gets the array of StyledText.
|
java.lang.String |
getUIClassID()
Returns a string that specifies the name of the L&F class that renders this component.
|
boolean |
isIgnoreColorSettings()
StyleRange could define color for the text and lines.
|
boolean |
isLineWrap()
Gets the flag indicating if the line should be automatically wrapped when the column width is limited.
|
boolean |
isTruncated()
Gets the status indicating if the StyledLabel is painted truncated.
|
void |
setIgnoreColorSettings(boolean ignoreColorSettings)
Sets if the color defined by StyleRange should be ignored.
|
void |
setLineWrap(boolean lineWrap)
Sets the flag indicating if the line should be automatically wrapped when the column width is limited.
|
void |
setMaxRows(int maxRows)
Sets the maximum rows possible after wrapping.
|
void |
setMinRows(int minRows)
Sets the minimum rows possible after wrapping.
|
void |
setPreferredWidth(int preferredWidth)
Sets the preferred width of the styled label.
|
void |
setRowGap(int rowGap)
Sets the gap pixels between rows.
|
void |
setRows(int rows)
Sets the default row count to wrap the
StyledLabel . |
void |
setStyleRanges(StyleRange[] styleRanges)
Clears all the old StyleRanges and adds a list of StyleRanges into this
StyledLabel . |
void |
setTruncated(boolean truncated)
It will be invoked by
BasicStyledLabelUI each time the StyledLabel is painted. |
void |
updateUI()
Resets the UI property to a value from the current look and feel.
|
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setText, setUI, setVerticalAlignment, setVerticalTextPosition
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, 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, 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
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, transferFocusDownCycle, validate, validateTree
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, 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, transferFocusBackward, transferFocusUpCycle
public static final java.lang.String PROPERTY_STYLE_RANGE
public static final java.lang.String PROPERTY_IGNORE_COLOR_SETTINGS
public StyledLabel()
public StyledLabel(javax.swing.Icon image)
public StyledLabel(javax.swing.Icon image, int horizontalAlignment)
public StyledLabel(java.lang.String text)
public StyledLabel(java.lang.String text, int horizontalAlignment)
public StyledLabel(java.lang.String text, javax.swing.Icon icon, int horizontalAlignment)
public void updateUI()
updateUI
in class javax.swing.JLabel
JComponent.updateUI()
public java.lang.String getUIClassID()
getUIClassID
in class javax.swing.JLabel
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void addStyleRange(StyleRange styleRange)
StyledLabel
.styleRange
- the new StyleRange.public void setStyleRanges(StyleRange[] styleRanges)
StyledLabel
.styleRanges
- set the StyleRanges.public void addStyleRanges(StyleRange[] styleRanges)
StyledLabel
.styleRanges
- an array of StyleRanges.public StyleRange[] getStyleRanges()
public void clearStyleRange(StyleRange styleRange)
styleRange
- the StyleRange to be removed.public void clearStyleRanges()
public boolean isIgnoreColorSettings()
public void setIgnoreColorSettings(boolean ignoreColorSettings)
ignoreColorSettings
- true or false.public java.awt.Dimension getMinimumSize()
getMinimumSize
in class javax.swing.JComponent
public java.awt.Dimension getMaximumSize()
getMaximumSize
in class javax.swing.JComponent
public void setPreferredWidth(int preferredWidth)
preferredWidth
- the preferred widthpublic int getPreferredWidth()
public boolean isLineWrap()
public void setLineWrap(boolean lineWrap)
lineWrap
- the flagpublic int getRows()
StyledLabel
.setRows(int)
public void setRows(int rows)
StyledLabel
.
By default, the value is 0. Any non-positive value is deemed as not configured.
This has lower priority than setPreferredWidth(int)
. If preferred width is set, this flag does not take
effect.rows
- the row countpublic int getRowGap()
setRowGap(int)
public void setRowGap(int rowGap)
rowGap
- the gap pixels.public int getMaxRows()
public void setMaxRows(int maxRows)
maxRows
- the maximum rowspublic int getMinRows()
public void setMinRows(int minRows)
minRows
- the minimum rowspublic boolean isTruncated()
public void setTruncated(boolean truncated)
BasicStyledLabelUI
each time the StyledLabel is painted.
Please do NOT try to call this method to change the flag and NOT expect the setting could change the behavior of
isTruncated()
.truncated
- the flag