BasicLabelUIpublic class BasicLabelUI extends LabelUI implements PropertyChangeListenerA Windows L&F implementation of LabelUI. This implementation
is completely static, i.e. there's only one UIView implementation
that's shared by all JLabel objects. |
Fields Summary |
---|
protected static BasicLabelUI | labelUI | private static Rectangle | paintIconR | private static Rectangle | paintTextR | private static Rectangle | paintViewR | private static Insets | paintViewInsets | private static Rectangle | iconR | private static Rectangle | textR | private static Rectangle | viewR | private static Insets | viewInsets |
Methods Summary |
---|
public static javax.swing.plaf.ComponentUI | createUI(javax.swing.JComponent c)
return labelUI;
| public java.awt.Dimension | getMaximumSize(javax.swing.JComponent c)
Dimension d = getPreferredSize(c);
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
d.width += v.getMaximumSpan(View.X_AXIS) - v.getPreferredSpan(View.X_AXIS);
}
return d;
| public java.awt.Dimension | getMinimumSize(javax.swing.JComponent c)
Dimension d = getPreferredSize(c);
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
d.width -= v.getPreferredSpan(View.X_AXIS) - v.getMinimumSpan(View.X_AXIS);
}
return d;
| public java.awt.Dimension | getPreferredSize(javax.swing.JComponent c)
JLabel label = (JLabel)c;
String text = label.getText();
Icon icon = (label.isEnabled()) ? label.getIcon() :
label.getDisabledIcon();
Insets insets = label.getInsets(viewInsets);
Font font = label.getFont();
int dx = insets.left + insets.right;
int dy = insets.top + insets.bottom;
if ((icon == null) &&
((text == null) ||
((text != null) && (font == null)))) {
return new Dimension(dx, dy);
}
else if ((text == null) || ((icon != null) && (font == null))) {
return new Dimension(icon.getIconWidth() + dx,
icon.getIconHeight() + dy);
}
else {
FontMetrics fm = label.getFontMetrics(font);
iconR.x = iconR.y = iconR.width = iconR.height = 0;
textR.x = textR.y = textR.width = textR.height = 0;
viewR.x = dx;
viewR.y = dy;
viewR.width = viewR.height = Short.MAX_VALUE;
layoutCL(label, fm, text, icon, viewR, iconR, textR);
int x1 = Math.min(iconR.x, textR.x);
int x2 = Math.max(iconR.x + iconR.width, textR.x + textR.width);
int y1 = Math.min(iconR.y, textR.y);
int y2 = Math.max(iconR.y + iconR.height, textR.y + textR.height);
Dimension rv = new Dimension(x2 - x1, y2 - y1);
rv.width += dx;
rv.height += dy;
return rv;
}
| protected void | installComponents(javax.swing.JLabel c)
BasicHTML.updateRenderer(c, c.getText());
c.setInheritsPopupMenu(true);
| protected void | installDefaults(javax.swing.JLabel c)
LookAndFeel.installColorsAndFont(c, "Label.background", "Label.foreground", "Label.font");
LookAndFeel.installProperty(c, "opaque", Boolean.FALSE);
| protected void | installKeyboardActions(javax.swing.JLabel l)
int dka = l.getDisplayedMnemonic();
Component lf = l.getLabelFor();
if ((dka != 0) && (lf != null)) {
LazyActionMap.installLazyActionMap(l, BasicLabelUI.class,
"Label.actionMap");
InputMap inputMap = SwingUtilities.getUIInputMap
(l, JComponent.WHEN_IN_FOCUSED_WINDOW);
if (inputMap == null) {
inputMap = new ComponentInputMapUIResource(l);
SwingUtilities.replaceUIInputMap(l,
JComponent.WHEN_IN_FOCUSED_WINDOW, inputMap);
}
inputMap.clear();
inputMap.put(KeyStroke.getKeyStroke(dka, ActionEvent.ALT_MASK,
false), "press");
}
else {
InputMap inputMap = SwingUtilities.getUIInputMap
(l, JComponent.WHEN_IN_FOCUSED_WINDOW);
if (inputMap != null) {
inputMap.clear();
}
}
| protected void | installListeners(javax.swing.JLabel c)
c.addPropertyChangeListener(this);
| public void | installUI(javax.swing.JComponent c)
installDefaults((JLabel)c);
installComponents((JLabel)c);
installListeners((JLabel)c);
installKeyboardActions((JLabel)c);
| protected java.lang.String | layoutCL(javax.swing.JLabel label, java.awt.FontMetrics fontMetrics, java.lang.String text, javax.swing.Icon icon, java.awt.Rectangle viewR, java.awt.Rectangle iconR, java.awt.Rectangle textR)Forwards the call to SwingUtilities.layoutCompoundLabel().
This method is here so that a subclass could do Label specific
layout and to shorten the method name a little.
return SwingUtilities.layoutCompoundLabel(
(JComponent) label,
fontMetrics,
text,
icon,
label.getVerticalAlignment(),
label.getHorizontalAlignment(),
label.getVerticalTextPosition(),
label.getHorizontalTextPosition(),
viewR,
iconR,
textR,
label.getIconTextGap());
| static void | loadActionMap(javax.swing.plaf.basic.LazyActionMap map)
map.put(new Actions(Actions.PRESS));
map.put(new Actions(Actions.RELEASE));
| public void | paint(java.awt.Graphics g, javax.swing.JComponent c)Paint the label text in the foreground color, if the label
is opaque then paint the entire background with the background
color. The Label text is drawn by paintEnabledText() or
paintDisabledText(). The locations of the label parts are computed
by layoutCL.
JLabel label = (JLabel)c;
String text = label.getText();
Icon icon = (label.isEnabled()) ? label.getIcon() : label.getDisabledIcon();
if ((icon == null) && (text == null)) {
return;
}
FontMetrics fm = SwingUtilities2.getFontMetrics(label, g);
Insets insets = c.getInsets(paintViewInsets);
paintViewR.x = insets.left;
paintViewR.y = insets.top;
paintViewR.width = c.getWidth() - (insets.left + insets.right);
paintViewR.height = c.getHeight() - (insets.top + insets.bottom);
paintIconR.x = paintIconR.y = paintIconR.width = paintIconR.height = 0;
paintTextR.x = paintTextR.y = paintTextR.width = paintTextR.height = 0;
String clippedText =
layoutCL(label, fm, text, icon, paintViewR, paintIconR, paintTextR);
if (icon != null) {
icon.paintIcon(c, g, paintIconR.x, paintIconR.y);
}
if (text != null) {
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
v.paint(g, paintTextR);
} else {
int textX = paintTextR.x;
int textY = paintTextR.y + fm.getAscent();
if (label.isEnabled()) {
paintEnabledText(label, g, clippedText, textX, textY);
}
else {
paintDisabledText(label, g, clippedText, textX, textY);
}
}
}
| protected void | paintDisabledText(javax.swing.JLabel l, java.awt.Graphics g, java.lang.String s, int textX, int textY)Paint clippedText at textX, textY with background.lighter() and then
shifted down and to the right by one pixel with background.darker().
int accChar = l.getDisplayedMnemonicIndex();
Color background = l.getBackground();
g.setColor(background.brighter());
SwingUtilities2.drawStringUnderlineCharAt(l, g, s, accChar,
textX + 1, textY + 1);
g.setColor(background.darker());
SwingUtilities2.drawStringUnderlineCharAt(l, g, s, accChar,
textX, textY);
| protected void | paintEnabledText(javax.swing.JLabel l, java.awt.Graphics g, java.lang.String s, int textX, int textY)Paint clippedText at textX, textY with the labels foreground color.
int mnemIndex = l.getDisplayedMnemonicIndex();
g.setColor(l.getForeground());
SwingUtilities2.drawStringUnderlineCharAt(l, g, s, mnemIndex,
textX, textY);
| public void | propertyChange(java.beans.PropertyChangeEvent e)
String name = e.getPropertyName();
if (name == "text" || "font" == name || "foreground" == name) {
// remove the old html view client property if one
// existed, and install a new one if the text installed
// into the JLabel is html source.
JLabel lbl = ((JLabel) e.getSource());
String text = lbl.getText();
BasicHTML.updateRenderer(lbl, text);
}
else if (name == "labelFor" || name == "displayedMnemonic") {
installKeyboardActions((JLabel) e.getSource());
}
| protected void | uninstallComponents(javax.swing.JLabel c)
BasicHTML.updateRenderer(c, "");
| protected void | uninstallDefaults(javax.swing.JLabel c)
| protected void | uninstallKeyboardActions(javax.swing.JLabel c)
SwingUtilities.replaceUIInputMap(c, JComponent.WHEN_FOCUSED, null);
SwingUtilities.replaceUIInputMap(c, JComponent.WHEN_IN_FOCUSED_WINDOW,
null);
SwingUtilities.replaceUIActionMap(c, null);
| protected void | uninstallListeners(javax.swing.JLabel c)
c.removePropertyChangeListener(this);
| public void | uninstallUI(javax.swing.JComponent c)
uninstallDefaults((JLabel)c);
uninstallComponents((JLabel)c);
uninstallListeners((JLabel)c);
uninstallKeyboardActions((JLabel)c);
|
|