Hintergrund jpg auf Panel

Dave It

Mitglied
Hallo,
ich habe ein Programm eines Vorgängers welches ich erweitern muss.
Hierzu will ich als Hintergrund für meinen StartPanel ein Bild einbauen.

Hier der Code für die Startseite. Das Programm besteht allerdings noch aus anderen Klassen.

Java:
package messdatenauswertung;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import static messdatenauswertung.Messpunkt.*;



public class Start implements ActionListener{                                   //Interface ActionListener implementieren
    static BufferedImage img_plan = null;                                       //Bild(Lageplan)festlegen
    static JFrame frame_hauptfenster = new JFrame();                            //Hauptfenster festlegen
    static JPanel panel_buttons = new JPanel();                                 //3 Buttons im Panel festlegen
    static JButton btn_gebaeudeplan = new JButton("Gebäudeplan");               //3 Buttons deklarieren
    static JButton btn_messpunkt = new JButton("Messpunkt");
    static JButton btn_auswertung = new JButton("Auswertung");
        
    static JPanel panel_darstellung= new JPanel() {                             //Darstellungspanel festlegen
        
        @Override
       public void paintComponent(Graphics g) 
            {
             g.drawImage(img_plan, 0, 0, (int) (Math.sqrt(2)*getHeight()), getHeight(), this);   //Bild "img_plan" darstellen ->
             
            }                                                                                  //(pos.2u3 Koord.,4u5Kasten für Bild,6 Observer für wann Bild gezeigt)
    };
    JMenuBar menuebar = new JMenuBar();                                         // Menüleiste erstellen
    JMenu menue_datei = new JMenu("Datei");
    JMenuItem item_beenden;
    
    public static void main(String[] args) {
        new Start().design();
             
    }
    
    private float CENTER_ALIGNMENT;
    
    private void design() {                                                     //Benutzeroberfläche erstellen
        frame_hauptfenster.setExtendedState(JFrame.MAXIMIZED_BOTH);             //Prog.mit max.Fenster starten
        frame_hauptfenster.setUndecorated(false);                               //Windows Task leiste ausblenden
        frame_hauptfenster.setTitle("Progamm zur Messwertauswertung");
        panel_darstellung.setLayout(null);                                      //
        frame_hauptfenster.getContentPane().add(panel_darstellung);             //Panel-Darst., nicht direkt an die Hauptf. angehängt, sondern an eine 
                                                                                //spezielle Inhalts-Komponente, welche man mit "getContentPane()" bekommt
        
        panel_buttons.setLayout(new BoxLayout(panel_buttons, BoxLayout.Y_AXIS));//Buttons untereinander anordnen
        frame_hauptfenster.add(panel_buttons, BorderLayout.EAST);               //Panel mit Buttons im Hauptfenster einbinden
        
        btn_gebaeudeplan.setToolTipText("Gebäudeplan laden");                   //Buttons beschriften
        panel_buttons.add(btn_gebaeudeplan);                                    //Buttons im Panel einbinden
        btn_messpunkt.setToolTipText("Messpunkt festlegen");
        panel_buttons.add(btn_messpunkt);
        btn_auswertung.setToolTipText("Auswertung anzeigen");
        panel_buttons.add(btn_auswertung);
        btn_gebaeudeplan.setAlignmentX(CENTER_ALIGNMENT);                                                               //Schriftanordnung zentral   
        btn_gebaeudeplan.setMaximumSize(new Dimension(Integer.MAX_VALUE, btn_gebaeudeplan.getMaximumSize().height));    //Buttonsgröße bestimmt
        btn_messpunkt.setAlignmentX(CENTER_ALIGNMENT);
        btn_messpunkt.setMaximumSize(new Dimension(Integer.MAX_VALUE, btn_messpunkt.getMaximumSize().height));
        btn_auswertung.setAlignmentX(CENTER_ALIGNMENT);
        btn_auswertung.setMaximumSize(new Dimension(Integer.MAX_VALUE, btn_auswertung.getMaximumSize().height));
        btn_gebaeudeplan.addActionListener(this);                               
        btn_messpunkt.addActionListener(this);                                  //Instanzen von Button übergeben
        btn_auswertung.addActionListener(this);
                
        item_beenden = new JMenuItem("Beenden");                                //neue Option in der Menüleiste erstellen
        item_beenden.addActionListener(this);                                   //Instanz zuweisen für Knopfdruck auf Beenden
        menue_datei.add(item_beenden);                                          //anbinden der Option Beenden an Fenster Datei in Menüleiste
        menuebar.add(menue_datei);                                              //Menüleiste an Frame anbinden
        frame_hauptfenster.add(menuebar,BorderLayout.NORTH);
        frame_hauptfenster.setVisible(true);
        
        frame_hauptfenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    }

    @Override
    public void actionPerformed(ActionEvent e) {                                //Aufruf der einzelnen Klassen bei Betätigung der Buttons oder Items
        if (e.getSource() == btn_gebaeudeplan){                                 //Ereignis wenn Button Geb.Pl. gedrückt
            if (img_plan == null){                                              //wenn kein Bild geladen dann....
                new Gebaeudeplan();                                             // Klasse Gebäudeplan neu laden
            }else{                                                              //ansonsten
                Object[] options = {"JA", "Nein"};                              //wenn Bild geladen und Button gedrückt dann Entscheidung ja oder nein
                int result = JOptionPane.showOptionDialog(null, 
                        "Neuen Bauplan laden?\nAlle Bearbeitungen gehen verloren!", //Text für Optionsfenster der Entscheidung
                        "Warnung", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,null, options, options[0]);
                if (result == JOptionPane.YES_OPTION){                          //wenn Entscheidung mit JA geantwortet dann ...
                    hm_messpunkt.clear();                                       //alles bereinigen
                    hm_pegeldarstellung.clear();
                    panel_darstellung.removeAll();
                    panel_darstellung.repaint();
                    new Gebaeudeplan();                                         //Klasse Gebäudeplan neu starten
                } 
            }
        }
        if (e.getSource() == btn_messpunkt){                                    //Ereignis wenn Button Messpunkt gedrückt
            if (img_plan == null){                                              //wenn kein Bild geladen dann....
                JOptionPane.showMessageDialog(null, "Bitte erst Gebäudeplan laden!", "Fehler", JOptionPane.ERROR_MESSAGE);  //Sofortnachricht
            }else{
                panel_darstellung.setCursor(new Cursor(Cursor.HAND_CURSOR));    //Cursor deklarieren
                btn_gebaeudeplan.setEnabled(false);
                btn_messpunkt.setEnabled(false);
                btn_auswertung.setEnabled(false);
                new Messpunkt();
            }
        }
        if (e.getSource() == btn_auswertung){
            if(hm_messpunkt.isEmpty()){
                JOptionPane.showMessageDialog(null, "Keine Auswertung möglich!\nBitte Messwerte hinzufügen!", "Fehler", JOptionPane.ERROR_MESSAGE);
            }else{
                new Auswertung();
            }
        }
        if (e.getSource() == item_beenden){
            Object[] options = {"JA", "Nein"};
            int result = JOptionPane.showOptionDialog(null, 
                    "Wollen sie die Anwendung wirklich beenden?\n"
                    + "Alle Bearbeitungen gehen verloren!", "Warnung", 
                    JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,null, 
                    options, options[0]);
            if (result == JOptionPane.YES_OPTION){
                System.exit(0);   
            } 
         
        }   
    }
    
   }

für das Bild hab ich eine extra Klasse:
Java:
package messdatenauswertung;

import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

   class BackgroundPanel extends JPanel {
     
        private static final long serialVersionUID = 1L;
        private Image img;
     
        public BackgroundPanel() {
     
            try {
                img = ImageIO.read(getClass().getResource("Desert.jpg"));
                System.out.println("Picture loaded.");
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("Picture was not found.");
            }
        }
     
        @Override
        protected void paintComponent(Graphics g) {
            // TODO Auto-generated method stub
            super.paintComponent(g);
            g.drawImage(img, 0, 0, this);
     
        }
     
        public Image getBackgroundImage() {
            return img;
        }
     
    }

ich denke ja das ich irgendwo diese Zeilen einbauen muss..Nur hab ich keine Ahnung wo und wie :oops:
Java:
BackgroundPanel backgroundPanel = new BackgroundPanel();
            add(backgroundPanel);
     
            setSize(backgroundPanel.getBackgroundImage().getWidth(backgroundPanel), backgroundPanel.getBackgroundImage().getHeight(backgroundPanel));

Würde mich mega freuen wenn mir jemand auf die Sprünge helfen würde.
DANKE
 

diggaa1984

Top Contributor
Ich würde sagen, "irgendwo" in der design-Methode .. und eventuell musst du noch nachdenken was mit den anderen panels gemacht werden muss.
 
Zuletzt bearbeitet:

Dave It

Mitglied
ich habe

static JPanel BackroundPanel = new JPanel();

bei ....
Java:
 blic class Start implements ActionListener{

impementiert und in die Design ...

Java:
 frame_hauptfenster.add(BackroundPanel);

..geschrieben

ich nehm ma stark an das das nich alles und oder das sowieso falsch ist
ich komm hier einfach nich weiter:(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Panel auf Hintergrund Java Basics - Anfänger-Themen 5
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
C JOptionPane tritt manchmal bei Plugin in den Hintergrund Java Basics - Anfänger-Themen 2
P SystemTray: Programm sol im Hintergrund weiter laufen Java Basics - Anfänger-Themen 30
T Wenn JFrame Textfelder Hintergrund Grün dann... (if) Java Basics - Anfänger-Themen 3
J Hintergrund bei einem Schachfeld Java Basics - Anfänger-Themen 1
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
N Hintergrund image mit .setContentPane Java Basics - Anfänger-Themen 6
U Website Quelltext auslesen - Javaskripte im Hintergrund? Java Basics - Anfänger-Themen 4
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
M hintergrund in jframe festlegen Java Basics - Anfänger-Themen 4
K Android 2d engine mit fortlaufendem hintergrund Java Basics - Anfänger-Themen 1
H Shell Command, im Hintergrund Java Basics - Anfänger-Themen 2
M Website im Hintergrund laden Java Basics - Anfänger-Themen 5
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
D Java hintergrund erstellen button positionierung Java Basics - Anfänger-Themen 9
B Funktionen programmieren, die im Hintergrund aktiv sind Java Basics - Anfänger-Themen 2
R Threads GUI über Hintergrund-Thread aktualisieren Java Basics - Anfänger-Themen 6
E JButton Hintergrund / Rahmen entfernen? Java Basics - Anfänger-Themen 4
L Erste Schritte 2 Button und der Hintergrund Java Basics - Anfänger-Themen 9
B Hintergrund ändern Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
I Bild in den Hintergrund Java Basics - Anfänger-Themen 6
D JMenuBar und Hintergrund eines Frames Java Basics - Anfänger-Themen 2
A Hintergrund erstellen Java Basics - Anfänger-Themen 2
G hintergrund wird nicht gezeichnet bei paint() Java Basics - Anfänger-Themen 3
K Hintergrund ändern Java Basics - Anfänger-Themen 5
C Frage für Programm mit Dauerschleife im Hintergrund Java Basics - Anfänger-Themen 11
U Neuling: Hintergrund bewegen Java Basics - Anfänger-Themen 14
I Balken, mit Bild im Hintergrund, zeichen Java Basics - Anfänger-Themen 4
M JMenu im Hintergrund Java Basics - Anfänger-Themen 8
Y Programm im Hintergrund stellen Java Basics - Anfänger-Themen 5
M Frame zeigt Desktop als Hintergrund Java Basics - Anfänger-Themen 2
A JPanel: Zeichnen funktioniert nicht - Nur grauer Hintergrund Java Basics - Anfänger-Themen 9
E Ich will doch nur einen Hintergrund! Java Basics - Anfänger-Themen 8
H KeyListener bei Frame im Hintergrund Java Basics - Anfänger-Themen 3
G Bilder in den Hintergrund eines Applets einfügen Java Basics - Anfänger-Themen 16
B jlist hintergrund Java Basics - Anfänger-Themen 5
G Hintergrund Java Basics - Anfänger-Themen 12
G Tastenanschläge aus dem Hintergrund erfassen Java Basics - Anfänger-Themen 3
J rechtecke als hintergrund / thread Java Basics - Anfänger-Themen 4
W Bilder als Hintergrund bei Textfeldern? Java Basics - Anfänger-Themen 2
R Möchte einen anderen Hintergrund, weis nicht wie? Java Basics - Anfänger-Themen 7
J Bild im Hintergrund Java Basics - Anfänger-Themen 8
jacquipre Eine Suchmethode im Hintergrund laufen lassen (Threads?) Java Basics - Anfänger-Themen 12
G Hintergrund verdeckt Buttons Java Basics - Anfänger-Themen 6
P task im hintergrund? Java Basics - Anfänger-Themen 11
U Gekachelter Hintergrund (ehem. JLabel html zuweisen) Java Basics - Anfänger-Themen 7
A Programm in den Hintergrund "verschieben" Java Basics - Anfänger-Themen 4
I Hintergrund in Applikation einbinden Java Basics - Anfänger-Themen 3
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
P Herausfinden, auf welchem Panel des CardLayouts man gerade ist? Java Basics - Anfänger-Themen 12
CptK Interface 2 von einander unabhängige Frames mit Panel gleichzeitig nutzen Java Basics - Anfänger-Themen 66
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
L Panel verkleinert sich unerklärlicherweise Java Basics - Anfänger-Themen 7
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
J Panel und Menü Java Basics - Anfänger-Themen 6
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
A Frage zu einer Methode - Panel arbeitet nicht ordnungsgemäß Java Basics - Anfänger-Themen 2
F Neues Panel und Button unsichtbar Java Basics - Anfänger-Themen 10
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
S Image in Panel laden Java Basics - Anfänger-Themen 12
D Panel von unten herausfahren Java Basics - Anfänger-Themen 2
S mehrere Rechtecke in ein Panel Java Basics - Anfänger-Themen 2
L panel verschmiert beim draggen! Java Basics - Anfänger-Themen 2
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
C Panel und Label überdecken sich Java Basics - Anfänger-Themen 2
J JLabels in Panel Aktualisieren Java Basics - Anfänger-Themen 5
H Panel in Variable setzen möglich? Java Basics - Anfänger-Themen 10
M Spezielles Panel fade in / out Java Basics - Anfänger-Themen 5
C Panel Hintergrundfarbe per AdjustmenListenmer ändern Java Basics - Anfänger-Themen 4
D GUI: Panel in Panel laden Java Basics - Anfänger-Themen 10
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
eLogic Panel hinzufügen Java Basics - Anfänger-Themen 4
Nic.o Panel während Ladevorgang einblenden Java Basics - Anfänger-Themen 12
B PacMan: Panel aktualisieren Java Basics - Anfänger-Themen 2
D Eingabe aus Dialog, Ergebnis an Panel Java Basics - Anfänger-Themen 2
Z JFileChooser/ Panel + Menüproblem Java Basics - Anfänger-Themen 3
J GridLayout auf Panel zentrieren? Java Basics - Anfänger-Themen 2
G Aus eigenem Panel dieses Löschen Java Basics - Anfänger-Themen 2
J Panel-übergreifende Kommunikation Java Basics - Anfänger-Themen 3
M Panel ersetzen funktioniert nicht Java Basics - Anfänger-Themen 2
M BorderLayout zickt! Ein Panel versteckt das andere! Java Basics - Anfänger-Themen 6
K Panel fixieren und nicht zentrieren Java Basics - Anfänger-Themen 2
F Zeichnen auf einem Panel Java Basics - Anfänger-Themen 2
N Panel entfernen Java Basics - Anfänger-Themen 2
B Zugriff auf JTextPane in einem anderen Panel Java Basics - Anfänger-Themen 2
H TabbedPane: wie schalte ich auf ein bestimmtes panel? Java Basics - Anfänger-Themen 2
G Bild in Panel oder canvas einfügen Java Basics - Anfänger-Themen 3
kulturfenster Panel in Frame integrieren Java Basics - Anfänger-Themen 5
H Paint Methode malt nicht im Panel Java Basics - Anfänger-Themen 4
J Probleme mit Visual Editor Komponenten auf Panel legen Java Basics - Anfänger-Themen 4
M Panel ausgrauen (disable) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben