Hintergrundbild in Java

Gast #2223236
Hallo zusammen

Ich werde fast verrückt. Seit 2 Tagen versuche ich nun bei einem Menü 
für ein Projekt ein Hintergrundbild einzufügen. Doch ich schaff das 
einfach nicht.
Habe dutzende Beispiele schon probiert, aber nichts scheint zu 
funktionieren.
Der Code für das erste Menüfenster sieht so aus:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.sound.sampled.Clip;
import javax.swing.*;

import java.applet.Applet;
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
import java.lang.*;


class gui extends JFrame implements ActionListener {

  private JButton[] itemButtons;
  private String[] items = { "Restart", "Pause", "Menu" };

  private JTextField textfield;
  private JTextField titel;
  private CardLayout cardLayout;
  private JPanel pnlMain;
  private JPanel pnlStartMenu;
  private JPanel pnlSpiel;
  private JPanel pnlEinstellungen;
  private JPanel pnlStart;
  private JPanel pnlHighscore;
  private JPanel pnlCredits;
  private JLabel lblBild;
  public  AudioClip ac;








  // Kostruktor
  public gui() {
    setTitle("SNAKE");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    // Einstellen eines BorderLayouts
    getContentPane().setLayout(new BorderLayout());



    pnlMain = new JPanel();
    pnlSpiel = new JPanel(); // Karte Menu
    pnlEinstellungen = new JPanel(); // Karte Einstellungen
    pnlStart = new JPanel();
    //pnlHighscore = new JPanel(); // Karte Highscore
    pnlCredits = new JPanel();

    //getContentPane().add(lblBild, BorderLayout.WEST);
    //getContentPane().add(pnlButton, BorderLayout.SOUTH);
    //getContentPane().add(lblBild, BorderLayout.WEST);
    //getContentPane().add(lblBild);



    getContentPane().add(pnlMain, BorderLayout.CENTER);



    pnlMain.add(pnlSpiel, BorderLayout.CENTER); // Menu ist eine Karte



    setSize(500, 600);
    //setLocation(10, 10);
    setVisible(true);

    cardLayout = new CardLayout(); // neues Cardlayout machen
    pnlMain.setLayout(cardLayout); // oberes Fenster = Cardlayout



    // Karte Start

    pnlMain.add(new StartMenu(this), "StartMenu");


    // Karte Spiel

    pnlSpiel.setLayout(new BorderLayout());
    JPanel canvas = new JPanel();
    canvas.setLayout(new GridLayout(1, 1));
    textfield = new JTextField();
    textfield.setEditable((false));
    textfield.setText("test");
    canvas.add(textfield);
    JPanel Titel = new JPanel();
    titel = new JTextField();
    titel.setEditable((false));
    titel.setText("SNAKE");
    Titel.add(titel);
    pnlSpiel.add(Titel, BorderLayout.NORTH);
    pnlSpiel.add(canvas, BorderLayout.CENTER);
    // pnlMain.add(pnlStartMenu, "StartMenu");
    JPanel spielbuttons = new JPanel();
    spielbuttons.setLayout(new GridLayout(1, 3));
    itemButtons = new JButton[items.length];
    for (int i = 0; i < items.length; i++) {
      itemButtons[i] = new JButton(items[i]);
      spielbuttons.add(itemButtons[i]);
      pnlSpiel.add(spielbuttons, BorderLayout.SOUTH);
      pnlMain.add(pnlSpiel, "Spiel");
    }
    itemButtons[0].addActionListener(this); // ActionListener Restart
    itemButtons[1].addActionListener(this); // ActionListener Pause
    itemButtons[2].addActionListener(this); // ActionListener Menu

    // Karte Highscore

    pnlMain.add(new Highscore(this), "Highscore");

    // Karte Credits

    pnlMain.add(new Credits(this), "Credits");


    // Karte Einstellungen

    pnlMain.add(new Einstellungen(this),"Einstellungen");

    // Karte Spielerauswahl

    pnlMain.add(new Spielerauswahl(this), "Spielerauswahl");


  }

  // Funktionen für den Cardwechsel

  public void GotoHauptfenster()
  {
    cardLayout.show(pnlMain, "StartMenu");
  }

  public void GotoCredits()
  {
    cardLayout.show(pnlMain, "Credits");
  }

  public void GotoHighscore()
  {
    cardLayout.show(pnlMain, "Highscore");
  }
  public void GotoSpiel()
  {
    cardLayout.show(pnlMain,"Spielerauswahl");
  }
  public void GotoEinstellungen()
  {
    cardLayout.show(pnlMain, "Einstellungen");
  }

  public void actionPerformed(ActionEvent evt) {

    if (evt.getSource().equals(itemButtons[2]))
    {
      System.out.println("Spiel_Back gedrückt");
      cardLayout.show(pnlMain, "StartMenu");
    }



    else
    {
      cardLayout.show(pnlMain, "");
    }
  }

  public static void main(String[] args) {
    gui h = new gui();
  }

}


Ich möchte eigentlich dass die Buttons ÜBER dem Bild liegen, doch wie 
kann ich das machen.
Wenn ich das Bild vor den Buttons ins BorderLayout einfüge, sehe ich das 
Bild nicht, nur die Buttons. Mache ich es umgekehrt, sehe ich das Bild 
aber die Buttons nicht.

Hoffe jemand kann mir helfen.

Gruess Jagger

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.