if (icon != null && text != null)
{
icon.paintIcon(this, g2, insets.left, insets.top);
g2.setFont(getFont());
final FontMetrics fontMetrics = g2.getFontMetrics();
final LineMetrics lineMetrics = fontMetrics.getLineMetrics(text, g2);
final float baseLine = lineMetrics.getAscent();
final float iconWidth = icon.getIconWidth();
final float textX = insets.left + gap + iconWidth;
final float iconHeight = icon.getIconHeight();
final float textY = insets.top + baseLine + (iconHeight - lineMetrics.getHeight());
g2.drawString(text, textX, textY);
}
else if (icon != null)
{
icon.paintIcon(this, g2, insets.left, insets.top);
}
else if (text != null)
{
g2.setFont(getFont());
final FontMetrics fontMetrics = g2.getFontMetrics();
final LineMetrics lineMetrics = fontMetrics.getLineMetrics(text, g2);
final float baseLine = lineMetrics.getAscent();
final int textX = insets.left;
final float textY = insets.top + baseLine;
g2.drawString(text, textX, textY);
}