Wie drawstring benutzen?

hury

Erfahrenes Mitglied
Hallo,

ich habe ein Programm, was ein .jpg als Hintergrund lädt und Klicks abfängt.
Ich möchte jetzt auf diesem Hintergrund Strings schreiben.

Die "drawstring" Methode passt ja eigentlich perfekt, aber wenn ich in der PaintComponent g.drawstring ("test", 23,23) hinzufüge, passiert nichts.

Wie muss man das lösen? Am liebsten wäre mir eine Methode, die ich separat aufrufen kann und der ich einen String und die Koordinaten übergeben kann, damit die auf mein Feld zeichnet.

Hier die Klasse:

Code:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


public class Gui extends JFrame {
	
	Controller controll = new Controller();
	Modell modell = new Modell();
	
public Gui() {
	super("ZahlenSpiel");
	JButton aButton = new JButton("Say hello xxx");
	aButton.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			JOptionPane.showMessageDialog(Gui.this,
					"Hello world", "InfoWindow",
					JOptionPane.INFORMATION_MESSAGE);
		}
	});
	
	aButton.setOpaque(true); // nicht durchscheinend (Standard)
	JButton exitButton = new JButton("Exit");
	exitButton.addActionListener(new ActionListener() {
		
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	});
	
	exitButton.setOpaque(false); // durchscheinend
	BackgroundPanel pane = new BackgroundPanel(new ImageIcon("feld.jpg"));
	pane.setLayout(new FlowLayout());
	pane.add(aButton);
	pane.add(exitButton);
	setContentPane(pane);
	pack();
	setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
	addWindowListener(new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	});
	
	addMouseListener(new MouseListener() {
		
		public void mouseClicked(MouseEvent e) {
			controll.setKlick(e.getX(), e.getY());
		}
		
		/**
		leere Implementierung (nur aus formalen Gründen vorhanden)
		*/
		public void mouseEntered(MouseEvent e){
		}
		public void mouseExited(MouseEvent e){
		}
		public void mousePressed(MouseEvent e){
		}
		public void mouseReleased(MouseEvent e){
		}
	});
	
	setLocation(new Point(100, 100));
	setVisible(true);
	
	this.setSize(800, 600);
	}



	public static void main(String[] args) {
		new Gui();
	}

}

class BackgroundPanel extends JPanel {

	private ImageIcon myIcon;

	public BackgroundPanel(ImageIcon icon) {
		super();
		myIcon = icon;
	}

public void paintComponent(Graphics g) {
	super.paintComponent(g); //paint background
	// scale the image to fit the component

	g.drawImage(myIcon.getImage(), 0, 0, 356, 536, this);
	}
}
 
Hi

normalerweise muss es funktionieren wenn du es nach deinem drawImage reinsetzt.

Hier ein Beispiel mit anderer Schriftfarbe und Schriftgröße:

Code:
public void paintComponent(Graphics g) {
    super.paintComponent(g); //paint background
    // scale the image to fit the component

    g.drawImage(myIcon.getImage(), 0, 0, 356, 536, this);
    g.setColor(Color.WHITE);
    Font f = g.getFont();
    f = f.deriveFont(40f);
    g.setFont(f);
    g.drawString("Hallo du", 100, 100);
    }
 
Hey,

seltsam, das funktioniert. Ich köntne schwören, dass es nicht ging ;)

Vielen Dank
Gruß
Alex
 
Zurück