paint by JTextField überschreiben

Schnacki

Mitglied
HI,
ich habe eine Frage:
Ich habe eine Klasse die von JTextField abgeleitet wird.
Dort habe ich die paintComponent-Methode überschrieben.
Doch jetzt verdeckt die Graphics den eingegeben Text.

Code:
import javax.swing.*;
import java.awt.*;

public class Textfeld extends JTextField {
	private static final long serialVersionUID = 1L;

	public Textfeld() {
		setOpaque(false);
	}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.CYAN);
		g.fillOval(5,5,getWidth(),getHeight());
	}
	public static void main(String[] args) {
		JFrame f = new JFrame();
		f.setVisible(true);
		f.add(new Textfeld());
	}

}
Wisst ihr was ich ändern muss, das der eingegebene Text nicht mehr verdeckt wird?
 
Hi,

sieht so aus als ob Du nur den Hintergrund einfärben willst.
Mach das doch mit JTextField.setBackground(Color.CYAN).

Dass Du bei Deiner Methode den Text nicht mehr sehen kannst ist ja klar. Immerhin rufst Du erst super.paint() auf. An der Stelle "malt" das Textfeld ja den Text :) . Und Du übermalst ihn dann wieder.

Ist mir doch noch etwas eingefallen: Du kannst auch nach Deinem fillOval mit g.drawString(this.getText(),...) weitermachen. Darauf aufbauend ließe sich jedenfalls ein beliebig eigentümliches Textfeld erstellen.
 
Zuletzt bearbeitet:
Zurück