}
    public void paintIcon(Component c, Graphics g, int x, int y) {        // We don't insist that it be on the same Component        g.setColor(c.getForeground());        g.setFont(c.getFont());        if (fRotation == ROTATE_NONE) {            int yPos = y + fCharHeight;            for (int i = 0; i < fCharStrings.length; i++) {                // Special rules for Japanese - "half-height" characters (like ya, yu, yo in combinations)                // should draw in the top-right quadrant when drawn vertically                // - they draw in the bottom-left normally                int tweak;                switch (fPosition[i]) {                    case POSITION_NORMAL:                         // Roman fonts should be centered. Japanese fonts are always monospaced.                          g.drawString(fCharStrings[i], x+((fWidth-fCharWidths[i])/2), yPos);                        break;                    case POSITION_TOP_RIGHT:                        tweak = fCharHeight/3; // Should be 2, but they aren't actually half-height                        g.drawString(fCharStrings[i], x+(tweak/2), yPos-tweak);                         break;                    case POSITION_FAR_TOP_RIGHT:                        tweak = fCharHeight - fCharHeight/3;                        g.drawString(fCharStrings[i], x+(tweak/2), yPos-tweak);                         break;                }                yPos += fCharHeight;            }        }        else if (fRotation == ROTATE_LEFT) {            g.translate(x+fWidth,y+fHeight);            ((Graphics2D)g).rotate(-NINETY_DEGREES);            g.drawString(fLabel, kBufferSpace, -fDescent);            ((Graphics2D)g).rotate(NINETY_DEGREES);            g.translate(-(x+fWidth),-(y+fHeight));        }         else if (fRotation == ROTATE_RIGHT) {            g.translate(x,y);            ((Graphics2D)g).rotate(NINETY_DEGREES);            g.drawString(fLabel, kBufferSpace, -fDescent);            ((Graphics2D)g).rotate(-NINETY_DEGREES);            g.translate(-x,-y);        }         }