Frage von Alwin0702, 102

Java JFrame Button + hintergrund?

Hallo, Ich programmiere gerade ein Spiel in Java und habe ein Problem! Ich will mein Menü machen und habe da ein Hintergrundbild aber immer wenn ich da Hintergrundbild habe sieht man die Knöpfe nicht mehr? Warum?

Mein Programm:http://pastie.org/10730723

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von DontHaveAName, 48

Der Fehler liegt hauptsächlich an der Reihenfolge..

try
{
setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("....")))));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

Solltest du in den Konstruktor legen und zwar nachdem zu super aufgerufen hast.

Antwort
von Belaro, 60

Du hast da einiges Falsch gemacht wie zum Beispiel hast du zum Teil nicht richtig OO programmiert. Mir war es langweilig und habe für dich mal den Code ein bisschen verbessert bzw. änderungen gemacht, damit es nun funktioniert. An einigen Stellen habe ich für dich eine Erklärung geschrieben.

Hier ist der "fertige" Code: http://pastie.org/10730893

Da du mit grösster Wahrscheinlichkeit noch ein Anfänger in Java und OO-Programmieren bist, würde ich dir das Buch "Java - Von Kopf bis Fuss" empfehlen. Ich selber arbeite auch gerade an diesem Buch und würde es jedem Anfänger empfehlen.


Cheers

Kommentar von DontHaveAName ,
Hier hast du den Pfad in einer falschen Form geschrieben. Der Pfad sollte so wie in meinem Beispiel
aussehen.

Falsch, der Pfad kann auch mit / geschrieben werden.

Außerdem ist getContentPane seit Java 1.5 nicht mehr notwendig. Man kann also auch ohne getContentPane die Methode add aufrufen. 

verstehe ich nicht. Klappt auch momentan nicht.

Liegt wohl einfach daran das uns der Fragesteller nur eine Klasse zur Verfügung gestellt hat. "gui" ist wohl einfach nur eine weitere Klasse.

Und wenn du schon den Code 'verbesserst', solltest du wenigstens auch den Klassennamen groß schreiben.

Außerdem ist es nur bedingt sinnvoll, alles in den Konstruktor zu klatschen. Das macht es genauso wenig übersichtlich, wie es in die main-Methode zu legen, wie es der Fragesteller getan hat. 

Kommentar von Belaro ,

@DontHaveAName & MogelHans

Ich habe erst seit den Sommerferien mit
Programmieren angefangen und seit Neujahr auch mit Java. Ich bin noch nicht der Beste in Java.
Danke für eure Verbesserungen!

Kommentar von Azasel ,

Ich habe mir das Buch ("Java von Kopf bis Fuß")vor einer Woche bestellt.
Das Buch arbeitet mit Java 5 und ist schon etwas veraltet.
Sonst kenne ich noch Schrödinger lernt Java, soll noch viel verständlicher sein.

Kommentar von MogelHans ,

An deinem Code hapert es aber auch an einigen Ecken.

Wenn du schon einen Code verbessern willst, dann richtig.

  1. Klassennamen werden groß geschrieben
  2. Da die paint Methode im Endeffekt nichts tut, sollte man Komposition, statt Vererbung verwenden. Man sollte also nicht von JFrame erben.
  3. Der Konstruktor ist viel zu voll. Teile diesen in weitere Methoden auf, um beispielsweise den Fenster, Buttons etc zu erstellen.
  4. getContentPane muss man nicht mehr aufrufen
  5. Verwende das MVC-Muster, meinetwegen auch das MVP
  6. Pfadangaben kann man mittels / machen. Es ist nicht nötig \\ zu verwenden.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten