Hej, ich lerne gerade wie ich in Java programmiere und ich habe ein problem bei dem ich seit 2 tagen nicht weiterkommen.
Es geht darum, dass ich eine GUI habe bei der ich auf ein JPanel eine map draufpacke. Ich lade die map
in ein BufferdImage und zeichne es dann auf das Panel
das Funktioniert auch. Dann wollte ich aber JLabels erstellen und diese auf die Map packen. Alerdings tretten dort erste Probleme auf. ich kriege es nicht hin, dass das JLabel auf der Map erschein.
Ich habe erst einaml probiert an sich etwas auf das Bild zu zeichnen, indem ich ein 2tes Bild eingelesen habe und es auf das erste Bild zeichnen wollte. Wenn ich alles in der selben Quelldatei mache dann funktioniert es. Wenn ich aber probiere es in eine Klasse auszulagern, dann passiert nix auf dem Bild.
Dabei ist mir dann auch der gedanke gekommen, das ich nicht ganz verstehe wie paintComponent funktioniert.
Soweit ich gelesen habe soll man diese Methode immer überschreiben, da sie beim verschieben des Fensters aufgerufen wird um alles neu zu zeichnen. Was wird aber an Graphics g übergeben?
ich habe eine 2te Klasse erstellt um wenigstens etwas auf dem Bild zeichnen zu können, bevor ich weiterversuche JLabels drauf zu bekommen.
ich dachte, wenn ich das Bild was bereits gezeichnet wurde als BufferedImage ünbergebe und dann in ein Graphics2D objekt packe, dass es sich vielleicht dann zeichnen lässt, allerdings passiert nichts.
Ich verstehe nicht wieso die Jlabels nicht sichtbar sind und wieso es nicht zeichnet.
Es geht darum, dass ich eine GUI habe bei der ich auf ein JPanel eine map draufpacke. Ich lade die map
in ein BufferdImage und zeichne es dann auf das Panel
Java:
public class Map extends JPanel{
private BufferedImage image;
Map(BufferedImage image) {
this.image = image;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
Ich habe erst einaml probiert an sich etwas auf das Bild zu zeichnen, indem ich ein 2tes Bild eingelesen habe und es auf das erste Bild zeichnen wollte. Wenn ich alles in der selben Quelldatei mache dann funktioniert es. Wenn ich aber probiere es in eine Klasse auszulagern, dann passiert nix auf dem Bild.
Dabei ist mir dann auch der gedanke gekommen, das ich nicht ganz verstehe wie paintComponent funktioniert.
Soweit ich gelesen habe soll man diese Methode immer überschreiben, da sie beim verschieben des Fensters aufgerufen wird um alles neu zu zeichnen. Was wird aber an Graphics g übergeben?
ich habe eine 2te Klasse erstellt um wenigstens etwas auf dem Bild zeichnen zu können, bevor ich weiterversuche JLabels drauf zu bekommen.
Java:
public class background extends JPanel{
BufferedImage image = null;
BufferedImage field = null;
background(BufferedImage field){
try{
this.image = ImageIO.read(new File("Pfad"));
} catch(IOException e){
System.out.print(e.getMessage());
}
this.field = field;
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2 = field.createGraphics();
super.paintComponent(g2);
g2.drawImage(image, 100, 100, 100, 100, this);
repaint();
}
}
Ich verstehe nicht wieso die Jlabels nicht sichtbar sind und wieso es nicht zeichnet.