String auf .jpg schreiben

hury

Erfahrenes Mitglied
Hallo zusammen,

ich weiss, dass das gleiche vor einigen Tagen gefragt wurde, aber ich finde den Thread nicht.
Ich will über eine jpg, die ich lade, Text drüber schreiben können. Allerdings verschwindet dann die jpg.

Code:
	public void get_skin() {
		/* Diese Funktion lädt das Hintergrund .jpg */
		
		    picturepanel = new JPanel (new FlowLayout());
	        Bild = new JLabel(hintergrund);
	        picturepanel.add(this.Bild);
	        getContentPane().add(BorderLayout.NORTH,picturepanel);
	        
	        picturepanel.addMouseListener(this);
	        repaint(); 
	}

Woran liegt es?

Grüße
Alex
 
Hi,

also hier nochmal der ganze Abschnitt:

Code:
public void paint( Graphics g ) 
	  { 
		g.setColor(Color.white);
	    g.drawString( "TEST", 350, 60 ); 
	    super.paint(g);
	  }

	private void initialize() {
		this.setTitle("Zahlen");
        this.setSize( new Dimension(hintergrund.getIconWidth(), hintergrund.getIconHeight()) );
        
        //Hintergrund .jpg laden
        get_skin(); 
        
        //Array mit Inahlt füllen
        feldoperationen SpielFeld = new feldoperationen();
		SpielFeld.initFeld();
	}
	
	public void get_skin() {
		/* Diese Funktion lädt das Hintergrund .jpg */
		
		    picturepanel = new JPanel (new FlowLayout());
	        Bild = new JLabel(hintergrund);
	        picturepanel.add(this.Bild);
	        getContentPane().add(BorderLayout.NORTH,picturepanel);
	        	        
	        picturepanel.addMouseListener(this);
	        repaint(); 
	                
	}

So funktionierts aber nicht wirklich. Wie könnte man Text ausserhalb der paint() Methode hinzufügen?

Grpüße
Alex
 
Hallo,

mal abgesehen davon, dass ich nie ein JLabel mit IconImage als Hintergrund nutzen
würde und es

Code:
public void paint( Graphics g )  { 
    super.paint(g);
    g.setColor(Color.white);
    g.drawString( "TEST", 350, 60 ); 
}

heißen müsste damit dein Text über den Komponenten landet, kann ich mir nicht erklären
warum dein .jpg verschwindet nur weil du ein drawString im paint ausführst.

Wo, für welche Komponente hast Du die paint-Methode denn in deinem Code überschrieben ?

Gruß JAdix
 
Hallo,

man überschreibt die paint-Methode und mal das Bild dann mit g.drawImage.

MFG

Sascha
 
Hallo,

aus meiner Sicht ist das Schreiben einer Klasse die eine ableitung von JPanel ist die
dankbarste Lösung.
Dort überschreibst du die getPrefferedSize-Methode und lässt sie die Größe deines Bildes zurückliefern.
In der paintComponent-Methode zeichnest du den Hintergrund mit drawImage und danach
evtl. andere vorhandene Kompnenten mit dem super.paintComponent.

Und das JPanel sorgt dafür das alle gewohnten Funktionalitäten vorhanden sind !

Gruß JAdix
 
Zurück