public void paintComponent(Graphics g) { int lineHeight = getLineHeight(); int startOffset = getStartOffset(); Rectangle drawHere = g.getClipBounds(); // Paint the background g.setColor( getBackground() ); g.fillRect(drawHere.x, drawHere.y, drawHere.width, drawHere.height); // Determine the number of lines to draw in the foreground. g.setColor( getForeground() ); int startLineNumber = (drawHere.y / lineHeight) + 1; int endLineNumber = startLineNumber + (drawHere.height / lineHeight); int start = (drawHere.y / lineHeight) * lineHeight + startOffset; for (int i = startLineNumber; i <= endLineNumber; i++) { String lineNumber = String.valueOf(i); int stringWidth = fontMetrics.stringWidth( lineNumber ); int rowWidth = getSize().width; g.drawString(lineNumber, rowWidth - stringWidth - MARGIN, start); start += lineHeight; } int rows = component.getSize().height / componentFontHeight; setPreferredWidth( rows ); }
public void paintComponent(Graphics g) { int lineHeight = getLineHeight(); int startOffset = getStartOffset(); Rectangle drawHere = g.getClipBounds(); // Paint the background g.setColor( getBackground() ); g.fillRect(drawHere.x, drawHere.y, drawHere.width, drawHere.height); // Determine the number of lines to draw in the foreground. g.setColor( getForeground() ); int startLineNumber = (drawHere.y / lineHeight) + 1; int endLineNumber = startLineNumber + (drawHere.height / lineHeight); int start = (drawHere.y / lineHeight) * lineHeight + startOffset; for (int i = startLineNumber; i <= endLineNumber; i++) { String lineNumber = String.valueOf(i); int stringWidth = fontMetrics.stringWidth( lineNumber ); int rowWidth = getSize().width; g.drawString(lineNumber, rowWidth - stringWidth - MARGIN, start); start += lineHeight; } int rows = component.getSize().height / componentFontHeight; setPreferredWidth( rows ); }