Forum: PC-Programmierung Hintergrundbild in Java


von Student (Gast)


Lesenswert?

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

von Hans M. (hansilein)


Lesenswert?

Nimm ein Frame, lade das Bild rein, füge zum frame einen Mouselistener 
hinzu, wertte dann im actionlistener aus auf welche koordinaten geklickt 
wurde und führe die passende aktion aus.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Student schrieb:
> Ich werde fast verrückt. Seit 2 Tagen versuche ich nun bei einem Menü
> für ein Projekt ein Hintergrundbild einzufügen

Äh was? Menü mit Hintergrundbild?
Versuche doch mal in einfache Worten zu erklären was du eigentlich 
willst.

Wenn du ein Panel mit einem Hintergrund versehen willst, geht das z.B 
am einfachstem über ein LayeredPane...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.