Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
public void move() {
if (zielx > x)
x++;
else if (zielx < x)
x--;
if (ziely > y)
y++;
else if (ziely < y)
y--;
}
Also meine Intention ist glaube ich recht klar zu erkennen: wenn an den linken Rand des Bildschirms gelaufen wird, dann soll das Hintergrundbild verändert werden; das klappt beim ersten Bild auch. Nur beim zweiten springt der immer wieder auf Position x=200 wenn man am Rand geht ohne dass das Hintergrundbild sich ändert, was ja darauf schließen lässt, dass das inGebiet1-Flag immer noch gesetzt ist (er scheint ja die erste, nicht wie ich es will die zweite, der if-Clauses zu durchlaufen). Ich versteh nicht ganz warum, weil in der ersten if-Clause wird doch, sobald in sie eingetreten wird, inGebiet1 auf false gesetzt, er müsste doch eigentlich dann die zweite if-Clause machen wenn man an den Rand geht (weil ja eben die Bedingung der ersten, dass inGebiet1 true ist, nicht erfüllt sein dürfte, die Bedingung der zweiten, inGebiet2 = true, aber doch)?
Wahrscheinlich ein sehr offensichtlicher Fehler, aber ich raffs grad nicht. Weiß vielleicht jemand wo mein Denkfehler ist?
Das machst du 2 mal. Das ist keine Abfrage, sondern eine Zuweisung! Keine Ahnung ob du das als Ursache nehmen kannst, du arbeitest da mit Klassen die meine Kristallkugel nicht beleuchten kann.
Ein weiteres Problem: vielleicht kann ich das eben hier stellen, dann brauch dafür nicht extra ein neuer Thread aufgemacht werden.
Weiß vielleicht jemand, ob es einen einfachen Trick gibt, JLabels in den Vordergrund zu setzen? Ich will, dass sie auf dem Bild erscheinen, leider überdeckt das Bild diese aber.
Wahrscheinlich ein recht verbreitetes Problem, aber seltsamerweise konnt ich über Google keine Antwort darauf finden. Wäre super wenn jemand nen Rat dazu hätte!
Hm, neues Problem.
Also ich hab ein bisschen mit dem JLayeredPane rumgespielt, da hat der aber nie das Hintergrundbild angezeigt. Ich bin mir nun nicht mehr sicher, ob ich davor irgendwas verändert hab, was dafür gesorgt hat dass das Bild allgemein nicht mehr angezeigt wird. Natürlich meine eigene Blödheit, dass ich keine Sicherungskopie von dem funktionierenden gemacht hab, aber sieht vielleicht jemand, warum das Hintergrundbild nicht mehr angezeigt wird?
Java:
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Test extends JFrame {
public Test() {
add(new Board2());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setTitle("Star");
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
public class GrafikenMalen {
public String star = "star.png";
public String hintergrund = "IMG1.gif";
// x und y (wie auch getX() und getY()) betreffen nur den Star, nicht den Hintergrund!!
public int zielx;
public int ziely;
public int x;
public int y;
public Image image;
public Image image2;
public ImageIcon ii;
public boolean inGebiet1 = true;
public boolean inGebiet2 = false;
public GrafikenMalen() {
ii = new ImageIcon(this.getClass().getResource(star));
image = ii.getImage();
ii = new ImageIcon(this.getClass().getResource(hintergrund));
image2 = ii.getImage();
//Startwerte?:
x = 40;
y = 60;
zielx = 40;
ziely = 60;
}
public void move() {
// if (inGebiet1 = true) {
// if (! ( (y > 0) && (y < 10) )) {
if (zielx > x)
x++;
else if (zielx < x)
x--;
if (ziely > y)
y++;
else if (ziely < y)
y--;
// } else y = 11;
// }
/* else if (inGebiet2 = true) {
if (! ( (y > 0) && (y < 80) )) {
if (zielx > x)
x++;
else if (zielx < x)
x--;
if (ziely > y)
y++;
else if (ziely < y)
y--;
} else y = 61;
} */
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Image getImage() {
return image;
}
public Image getHintergrund() {
return image2;
}
}
Ich kanns mir echt nicht erklären, ich könnt schwören alles ist ganz genauso wie es war, als das Hintergrundbild noch problemlos angezeigt wurde. Spätestens wenn man sich zum linken Rand bewegt müsste doch ein Bild geladen werden... sieht nicht vielleicht jemand den Fehler?
aber image2 ist doch der Hintergrund? ändere zu image bzw. in der actionPerformed lieber gar nix,
nur setStar(String) aufrufen und in der Klasse GrafikenMalen richtig laden