Hintergrundbild in Jframe einfügen

yvoloves

Mitglied
Hallo Liebe Community,

Ich muss im Rahmen eines Projektes für die Schule ein Spiel programmieren.

Nun versuche ich für mein JFrame Form fenster ein hintergrundbild festzulegen, hab auch schon diverse Idden ausprobiert, aber nichts will funktionieren. :bahnhof:

Hat hier einer eine Idee mit welchem einfachen Befehl ich das hinbekommen könnte ?

Danke schonmal im Vorraus :)
 

Enceladus271

Bekanntes Mitglied
Also ein Image Objekt kannst du z.B. so erzeugen:
java.awt.Image image = new javax.swing.ImageIcon( "test.jpg" ).getImage();

Es gibt keinen Konstruktor für JFrame oder JPanel wo du dieses Image dann angeben kannst. D.h. wenn du es z.B. in einem JFrame haben willst, dann musst du deine eigene Klasse von JFrame ableiten.

In JFrame gibt es eine Methode paint(Graphics). Diese Methode wird automatisch von Java aufgerufen wenn das JFrame auf dem Monitor angezeigt werden soll. Diese Methode musst du überschreiben, so dass sie zusätzlich das Bild auf dem JFrame anzeigt ("zeichnet"). Und das kannst du erreichen, indem du bei dem Graphics Objekt, welches der paint Methode als Parameter übergeben wird einfach die Methode drawImage aufrufst.
 

Androbin

Bekanntes Mitglied
Also ein Image Objekt kannst du z.B. so erzeugen:
java.awt.Image image = new javax.swing.ImageIcon( "test.jpg" ).getImage();

Es gibt keinen Konstruktor für JFrame oder JPanel wo du dieses Image dann angeben kannst. D.h. wenn du es z.B. in einem JFrame haben willst, dann musst du deine eigene Klasse von JFrame ableiten.

In JFrame gibt es eine Methode paint(Graphics). Diese Methode wird automatisch von Java aufgerufen wenn das JFrame auf dem Monitor angezeigt werden soll. Diese Methode musst du überschreiben, so dass sie zusätzlich das Bild auf dem JFrame anzeigt ("zeichnet"). Und das kannst du erreichen, indem du bei dem Graphics Objekt, welches der paint Methode als Parameter übergeben wird einfach die Methode drawImage aufrufst.
1. Das Bild holt er sich besser über:
Java:
BufferedImage image = null;
try { image = ImageIO.read( ResourceLoader.class.getResource( "<Pfad>" ) ); }
catch ( Exception e )  { e.printStackTrace(); }

2. Man leitet grundsätzlich nicht von JFrame ab,
da man es ja in seiner Funktion nicht erweitert,
leite stattdessen von JPanel oder noch besser von JComponent
und füge es einem JFrame als ContentPane hinzu.

3. Überschreibe auf gar keinen Fall paint, sondern paintComponent,
da in paint mehr passiert als nur paintComponent aufzurufen ...,
und rufe dort als aller erstes super.paintComponent auf,
da das für DoubleBuffering notwendig ist.
 

yvoloves

Mitglied
im moment sieht mein code so aus :

Java:
import com.sun.xml.internal.ws.api.ResourceLoader;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Hauptmenü.java
 *
 * Created on 27.04.2015, 03:10:38
 */

/**
 *
 * @author riesyv
 */
public class Hauptmenü extends javax.swing.JFrame {

    // JFrame-Objekt zum "Merken" des Startformulars
    JFrame start = null;

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    BufferedImage image = null;
    
    /** Creates new form Hauptmenü */
    public Hauptmenü() {
        

        try {
            image = ImageIO.read(ResourceLoader.class.getResource("H:/Schule/Jahrgangsstufe 2/WI/Projekt/Bilder/hintergrund.jpeg"));
        }

        
    catch ( IOException e )
    {
        // e.printStackTrace();
    }
        initComponents();
    }

    

    /*   public void Hintergrundbild(java.awt.event.ActionEvent evt){

        try {
            image = ImageIO.read(ResourceLoader.class.getResource("H:/Schule/Jahrgangsstufe 2/WI/Projekt/Bilder/hintergrund.jpeg"));
        }

        
    catch ( IOException e )
    {
        // e.printStackTrace();
    } 
    }*/

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        lblTextWWM = new javax.swing.JLabel();
        btnNeuesSpiel = new javax.swing.JButton();
        btnSpielBeenden = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setForeground(java.awt.Color.white);

        lblTextWWM.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        lblTextWWM.setText("Wer wird Millionär ?");

        btnNeuesSpiel.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        btnNeuesSpiel.setText("Neues Spiel");
        btnNeuesSpiel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNeuesSpielActionPerformed(evt);
            }
        });

        btnSpielBeenden.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        btnSpielBeenden.setText("Spiel beenden");
        btnSpielBeenden.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSpielBeendenActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(151, 151, 151)
                .addComponent(lblTextWWM)
                .addContainerGap(186, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(67, 67, 67)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(btnSpielBeenden, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE)
                    .addComponent(btnNeuesSpiel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE))
                .addGap(78, 78, 78))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblTextWWM, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(50, 50, 50)
                .addComponent(btnNeuesSpiel)
                .addGap(61, 61, 61)
                .addComponent(btnSpielBeenden)
                .addContainerGap(74, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void btnSpielBeendenActionPerformed(java.awt.event.ActionEvent evt) {                                                
      System.exit(0);
    }                                               

    private void btnNeuesSpielActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // Startfenster unsichtbar machen
        this.setVisible(false);
        // Fensterobjekt für Formular Kundendaten anlegen
        Spiel spiel = new Spiel();
        // Aktuelles Fensterobjekt (Startfenster) zum "Merken" an das Folge-
        // fenster übergeben - damit kann man das Startfenster beim Beenden
        // des Formulars Spiel wieder sichtbar machen.
        spiel.setHauptmenü(this);
        // Fenster zum Lesen der Kundendaten sichtbar machen
        spiel.setVisible(true);
    }                                             

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                Hauptmenü start = new Hauptmenü();
                new Hauptmenü().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btnNeuesSpiel;
    private javax.swing.JButton btnSpielBeenden;
    private javax.swing.JLabel lblTextWWM;
    // End of variables declaration                   

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H [ANIMATION] Hintergrundbild nur einmal zeichnen Spiele- und Multimedia-Programmierung 3
Fu3L Extreme Prozessorauslastung durch Hintergrundbild Spiele- und Multimedia-Programmierung 5
B Mehrere Klassen auf JFrame Spiele- und Multimedia-Programmierung 3
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
T JFrame Background Spiele- und Multimedia-Programmierung 5
RalleYTN OpenGL Context im JFrame? Spiele- und Multimedia-Programmierung 0
Silvascus Bild --> JFrame Hintergrund Spiele- und Multimedia-Programmierung 3
A paintComponent in JPanel in JFrame Spiele- und Multimedia-Programmierung 7
J Int Wert auf JFrame zeichnen Spiele- und Multimedia-Programmierung 3
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
M JFrame blockiert java Anwendung Spiele- und Multimedia-Programmierung 2
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
D JFrame Resize Polygone anpassen Spiele- und Multimedia-Programmierung 6
A zweite jFrame?? Spiele- und Multimedia-Programmierung 2
C Anfängerfrage: Plazierung Panel im JFrame und KeyLIstener Spiele- und Multimedia-Programmierung 4
D Canvas3D vom JFrame entfernen Spiele- und Multimedia-Programmierung 2
W Java Resourcen Problem (JFrame) Spiele- und Multimedia-Programmierung 8
S FullScreen Modus - Spielschleife überzeichnet zweite JFrame Spiele- und Multimedia-Programmierung 5
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
S Wie kann ich ein Bild in einen Frame einfügen? Spiele- und Multimedia-Programmierung 2
C Sound einfügen und abspielen Spiele- und Multimedia-Programmierung 6
javampir Lange Hintergrundgrafik einfügen und bewegen Spiele- und Multimedia-Programmierung 3
G zur laufzeit objekte einfügen Spiele- und Multimedia-Programmierung 3
D 2D Graphic Objekte in ein JPanel einfügen Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben