import javax.swing.JLabel; //导入方法依赖的package包/类
@Override
public Component prepareRenderer(
TableCellRenderer renderer,
int row,
int column) {
SwitcherTableItem item
= (SwitcherTableItem) getSwitcherTableModel().getValueAt(row, column);
boolean selected = row == getSelectedRow() &&
column == getSelectedColumn() && item != null;
Component ren = renderer.getTableCellRendererComponent(this, item,
selected, selected, row, column);
JLabel lbl = null;
if (ren instanceof JLabel) {
// #199007: Swing HTML renderer does a poor job of truncating long labels
JLabel prototype = (JLabel) ren;
lbl = HtmlRenderer.createLabel();
if( lbl instanceof HtmlRenderer.Renderer ) {
((HtmlRenderer.Renderer)lbl).setRenderStyle( HtmlRenderer.STYLE_TRUNCATE );
}
lbl.setForeground(prototype.getForeground());
lbl.setBackground(prototype.getBackground());
lbl.setFont(prototype.getFont());
// border, text will be overwritten below anyway
ren = lbl;
}
if (item == null) {
// it's a filler space, we're done
if( null != lbl ) {
lbl.setOpaque(false);
lbl.setIcon(null);
}
return ren;
}
Icon icon = item.getIcon();
if (icon == null || icon.getIconWidth() == 0 ) {
icon = nullIcon;
}
boolean active = item.isActive();
if( null != lbl ) {
lbl.setText((selected || (active && !TABNAMES_HTML)) ? stripHtml( item.getHtmlName() ) : item.getHtmlName());
lbl.setBorder(rendererBorder);
if( showIcons ) {
lbl.setIcon(icon);
lbl.setIconTextGap(26 - icon.getIconWidth());
}
}
if (active) {
if (TABNAMES_HTML) {
if( null != lbl )
lbl.setText(lbl.getText() + " ←"); // NOI18N
} else if (Utilities.isWindows()) {
ren.setFont(getFont().deriveFont(Font.BOLD, getFont().getSize()));
} else {
// don't use deriveFont() - see #49973 for details
ren.setFont(new Font(getFont().getName(), Font.BOLD, getFont().getSize()));
}
}
if( null != lbl )
lbl.setOpaque(true);
return ren;
}