Konstantes Antialiasing in JScrollPane

snoopysalive

Mitglied
Hi!

Kann mir einer von euch sagen, wie ich den Inhalt eines JEditorPanes in einem JScrollPane konstant auf Antiasing schalte? Überschreibe ich die paintComponent-Methode des JFrames, welcher das JScrollPane beinhaltet, mit folgendem Code,...
Java:
public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(
        RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIAS_ON);
    super.paintComponent(g2);
}
... so bewirkt das zwar, dass der dargestellte Text zwar tatsächlich geglättet wird, doch ändert sich das, sobald man das JScrollPane scrollt. Soll heißen: Sobald man scrollt, werden die neu auftauchenden Inhalte nicht mehr geglättet. Scrollt man zurück, werden die Inhalte, die schon mal angezeigt worden waren, durch das Scrollen aber verdeckt wurden, ebenfalls nicht mehr geglättet.

Ich war schon am Überlegen, ob es was brächte, wenn ich dem JScrollPane einen Listener hinzufügte, der die repaint-Methode aufruft, sobald gescrollt wird, doch dem JScrollPane lässt sich kein ActionListener zuordnen.

Daher jetzt meine Frage an euch: Wie aktiviert man in Java konstantes Antialiasing in JScrollPanes?

Gruß und danke,
Matthias
 
Danke, hat geklappt. Allerdings musste ich das JEditorPane überschreiben, nicht das JScrollPane. Ich habe dazu einfach eine innere Klasse angelegt, die von JEditorPane erbt. Bei Interesse, hier der Code:

Java:
private class TagWindowEditorPane extends JEditorPane {
		public void paintComponent(Graphics g) {
			Graphics2D g2 = (Graphics2D) g;
			g2.setRenderingHint(
			        RenderingHints.KEY_ANTIALIASING, 
			        RenderingHints.VALUE_ANTIALIAS_ON);
			super.paintComponent(g2);
		}
	}

Danke, Tom!
 
Zurück