Hallo,
langsam dachte ich, dass ich bei Swing durchsteige. Scheinbar aber immernoch nicht, denn folgendes ist mir ein Rätsel.
Ich habe ein JFrame. (BorderLayout) Im Center Bereich habe ich eine JComponent. Dort soll ein Bild drauf gezeichnet werden. Die JComponent ist private Klasse im JFrame.
Wobei SceneChanged eine Variable vom JFrame ist, die angibt, ob die Szene neu gezeichnet werden muss. Diese ist im Konstruktor vom JFrame auf true gesetzt.
Wenn ich das nun aufrufe, wird das Bild nicht gezeichnet. Wenn ich die Abfrage, ob er neu zeichnen darf, rausnehme, wird es ganz normal, wie gewollt, gezeichnet.
Ich habe versucht, heraus zu bekommen, was beim ersten Aufruf von paintComponent anders ist, als beim zweiten (bei dem es ja funktioniert). Ich finde aber keine Unterschiede. Er hat das Bild, er kann die Größen alle richtig auslesen, drawImage methode liefert true... es erscheint nur einfach kein Bild.
Warum?
lg Toto
langsam dachte ich, dass ich bei Swing durchsteige. Scheinbar aber immernoch nicht, denn folgendes ist mir ein Rätsel.
Ich habe ein JFrame. (BorderLayout) Im Center Bereich habe ich eine JComponent. Dort soll ein Bild drauf gezeichnet werden. Die JComponent ist private Klasse im JFrame.
Java:
private class ScenePanel extends JComponent {
public void paintComponent(Graphics g) {
if (!sceneChanged) {
return;
}
super.paintComponent(g);
drawCurrentScene(g);
sceneChanged = false;
}
private void drawCurrentScene(Graphics g) {
Image bImg = game.getCurrentScene().getBackgroundImage();
/* BACKGROUND GRAPHIC */
g.drawImage(
bImg,
0,
0,
this.getWidth(),
this.getHeight(),
null);
}
}
Wobei SceneChanged eine Variable vom JFrame ist, die angibt, ob die Szene neu gezeichnet werden muss. Diese ist im Konstruktor vom JFrame auf true gesetzt.
Wenn ich das nun aufrufe, wird das Bild nicht gezeichnet. Wenn ich die Abfrage, ob er neu zeichnen darf, rausnehme, wird es ganz normal, wie gewollt, gezeichnet.
Ich habe versucht, heraus zu bekommen, was beim ersten Aufruf von paintComponent anders ist, als beim zweiten (bei dem es ja funktioniert). Ich finde aber keine Unterschiede. Er hat das Bild, er kann die Größen alle richtig auslesen, drawImage methode liefert true... es erscheint nur einfach kein Bild.
Warum?
lg Toto