ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung)

larsz98

Mitglied
Hallo liebe Forumuser,

ich bräuchte eure Hilfe bei folgendem Code:

Java:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Spiel extends JPanel{

    Image img;
   
    String pfad="Bilder/Hintergrundbild"; //Hier ist es egal ob "\\" oder "\" oder "/"
   
    public Spiel(){
        setFocusable(true);
        ImageIcon Icon=new ImageIcon(pfad +".jpg");
        img=Icon.getImage();
       
    }
   
    public void paint(Graphics g){
        super.paint(g);
        Graphics2D f2 = (Graphics2D) g;
       
        f2.drawImage(img,0,0,null);
    }
}

Es wird dabei, jedenfalls bei mir, kein Bild angezeigt. Kann mir einer von euch dabei helfen. Diese Klasse wird von einer anderen aufgerufen. Bei Bedarf stelle ich auch diese rein. Hier nur der Ausschnitt, an der die Klasse aufgerufen wird:

Java:
    private void fenster() {
        JFrame MainGame=new JFrame("Main Game");
        MainGame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MainGame.setSize(800,600);
        MainGame.setLayout(null);
        MainGame.setVisible(true);
        MainGame.add(new Spiel());


Im Vorraus schon mal ein großes Danke für jegliche Hilfe!

Mit freundlichen Grüßen,
Lars
 

Harry Kane

Top Contributor
Dafür gibt es gleich mehrere mögliche Fehlerursachen:
1. Du hast paint überschrieben, nicht paintComponent. Das muss zwar nicht zwangsläufig ein Fehler sein, ist aber trotzdem nicht empfehlenswert.
2. Dein MainGame hat ein null-Layout. Deshalb musst du die Größe und Position von Spiel von Hand setzen.
3. Das Bild wird nicht gefunden. Du kannst ja mal überprüfen, ob
Java:
new File(pfad +".jpg").exists()
true zurückgibt.
 

larsz98

Mitglied
Danke für die schnelle Antwort.
Punkt 1 habe ich bearbeitet.
Zu Punkt 2 : Es erscheint ein Fenster mit den Größen 800,600
Zur Punkt3 : Es gibt false aus. Habe es gerade nochmal mit allen Variationen ausprobiert, es hat allerdings nichts genützt. Jedes Mal "false".
 

Harry Kane

Top Contributor
Zu Punkt 2 : Es erscheint ein Fenster mit den Größen 800,600
Das ist ja gut und schön, hat aber mit meinem Hinweis nichts zu tun. Das Fenster ist lediglich der Container, in dem das JPanel liegt. Selbst wenn das Fenster 800,600 groß ist, kann das JPanel immer noch eine Größe von 0,0 haben und wird damit nicht angezeigt.
Zur Punkt3 : Es gibt false aus. Habe es gerade nochmal mit allen Variationen ausprobiert, es hat allerdings nichts genützt. Jedes Mal "false".
Und brauchst du jetzt Hilfe dabei, eine Datei an den angegebenen Ort zu bringen?o_O
 
Zuletzt bearbeitet:

larsz98

Mitglied
Und brauchst du jetzt Hilfe dabei, eine Datei an den angegebenen Ort zu bringen?o_O
So traurig das jetzt klingt, ich denke schon.. Ich poste mal als Bild meine Struktur der Ordner..
Vielleicht findest du meinen Fehler.



tYzLGv7.jpg

Zur Erinnerung: Mein angegebener Pfad lautet: /Bilder//Hintergrundbild.jpg
 

Delta Roh

Mitglied
Hab zwar nicht viel Ahnung was den Bilderbereich angeht, aber rein logisch gesehen bist du ja im "Default package" Verzeichnis mit deinem Programm.
Dein "Bilder" Verzeichnis liegt nicht IN deinem default Verzeichnis sondern NEBEN diesem...
Daher würde ich einfach mal versuchen bei der Pfadangabe ein Verzeichnis höher zu suchen, sodass dein Pfad dann "../Bilder/Hintergrundbild.jpg" lauten würde...
Sollte das nicht funktionieren hattest du wenigstens einen Zeitvertreib bis jemand mit mehr Ahnung zur Thematik antworten konnte:D
 

Khal Drogo

Bekanntes Mitglied
Sollte funktionieren, wenn der Ordner Bilder im Projektordner ist, also im gleichen Ordner wie bin, src etc., da du Eclipse benutzt. Habe das ganze mittels File.exists() getestet.

Mit freundlichen Grüßen
Xelsarion
 

larsz98

Mitglied
Gut, danke! Bei mir spunkt File.exists() nun auch true raus.
Jedoch wird das Bild nicht angezeigt. Habe auch schon ein Bild selbst gemacht mit der Größe 800|600.
Bringt jedoch auch nichts.

panel.setPreferredSize(new Dimension(800,600));
Auch die Methode preferredSize() hilft nicht weiter.
Wie kann ich also die Größe eines Panels anpassen?

Hier meiner "neuer" Code:
Java:
package game_package;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Spiel extends JPanel{

    private Image img;
    JPanel panel = new JPanel();
    String pfad="Bilder//hintergrundbild"; //Hier ist es egal ob "\\" oder "\" oder "/"
    ImageIcon icon;
    public Spiel(){
        panel.setPreferredSize(new Dimension(800,600));
        setFocusable(true);
        try {
            icon= new ImageIcon(pfad+ ".png");
            img= icon.getImage();
        } catch (Exception e) {
            System.out.println("Funktioniert nicht.");        }
   
       
        //img=Icon.getImage();
        System.out.println(new File(pfad + ".png").exists());
       
    }
   
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D f2 = (Graphics2D) g;
       
        f2.drawImage(img,0,0,panel);
    }
}
 
Zuletzt bearbeitet:

Joose

Top Contributor
Das Problem liegt unter anderem auch daran das dein JFrame ein "null"-Layout bekommen hat.
Eine wichtige Regel -> verwende niemals das "null"-Layout.

Du hast nun ein Fenster das 800*600 groß ist, ein JPanel mit Bild das 800*600 groß ist. Da du ein "null"-Layout hast müsstest du ihm eigentlich noch angeben wo es gezeichnet werden soll also x/y Position.
Würdest du stattdessen einen LayoutManager verwenden, würde sich dieser um die Positionierung kümmern
 

larsz98

Mitglied
@Xelsarion
Dankeschön für deinen Link, sehr nützlich. Das Buch kennt man als Java Programmierer.

Auch an alle anderen einen großen Dank.
Hier nochmal die Lösung:
Ich erstelle mir jetzt immer ein neues Package. Achtet darauf, dass ihr nicht im Standard-Package programmiert. Einfach direkt am Anfang ein Package erstellen und nicht im "default-package" programmieren.
Ihr initialisiert das Bild mit
Code:
//allgemeine Formel:
img= new Image("anderesPackage/name_des_bildes.jpg/.png");

//Beispiel:
img= new Image("img/gegner_img.png);

Ihr müsst auch nicht wie ich das gemacht habe mit Graphics2D oder dem ImageIcon arbeiten.
g.drawImage(img,x,y,..) reicht vollkommen!

So ist euer Bild auch noch nach dem Export des Projektes vorhanden.

Viel Spaß und vielen Danke an die kompetente Hilfe alle Helfer in dem Forum!!

Mit freundlichen Grüßen,
Lars
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
O ImageIcon lädt nicht AWT, Swing, JavaFX & SWT 2
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
R ImageIcon - Über Socket AWT, Swing, JavaFX & SWT 1
P ImageIcon lade schlägt fehl AWT, Swing, JavaFX & SWT 5
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
C Swing ImageIcon mit Bild aus Temp-Verzeichniss füllen AWT, Swing, JavaFX & SWT 15
P ImageIcon auf Rectangle AWT, Swing, JavaFX & SWT 3
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
A Swing ImageIcon hover AWT, Swing, JavaFX & SWT 9
M ImageIcon Bild wird beim verkleinern des Fensters nicht verkleinert AWT, Swing, JavaFX & SWT 3
B Swing ImageIcon Resizing AWT, Swing, JavaFX & SWT 15
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Warten bis neues ImageIcon zugewiesen ist AWT, Swing, JavaFX & SWT 3
Zettelkasten imageIcon-Rand wegmachen AWT, Swing, JavaFX & SWT 5
S Abspeichern aus einem ImageIcon ins korrekte Format AWT, Swing, JavaFX & SWT 2
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
S ImageIcon Grösse anpassen AWT, Swing, JavaFX & SWT 2
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
B Problem mit imageIO und ImageIcon AWT, Swing, JavaFX & SWT 5
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
C Swing JComboBox - Problem bei Darstellen von ImageIcon AWT, Swing, JavaFX & SWT 4
G ImageIcon viel zu groß AWT, Swing, JavaFX & SWT 2
G IMageIcon Bildgröße ändern AWT, Swing, JavaFX & SWT 7
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
W ImageIcon im JLabel mit autosize? AWT, Swing, JavaFX & SWT 3
B ImageIcon JFrame AWT, Swing, JavaFX & SWT 3
M ImageIcon auf AbstractButton links-/rechtbündig AWT, Swing, JavaFX & SWT 2
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
M ImageIcon in JLabel verkleinern AWT, Swing, JavaFX & SWT 8
S n-e-w JLabel(n-e-w ImageIcon(i)) funkt. nicht im JScrollPane AWT, Swing, JavaFX & SWT 2
M Problem, an ImageIcon in JPanels zu kommen. AWT, Swing, JavaFX & SWT 2
J Bildfilterung und Ausgabe in ein ImageIcon AWT, Swing, JavaFX & SWT 2
X ImageIcon für JButton AWT, Swing, JavaFX & SWT 4
X JButton "effect" für ImageIcon AWT, Swing, JavaFX & SWT 6
F ImageIcon -> BufferedImage AWT, Swing, JavaFX & SWT 2
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
G JLabel und ImageIcon AWT, Swing, JavaFX & SWT 16
padde479 ImageIcon laden AWT, Swing, JavaFX & SWT 6
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
J ImageIcon, Image - 100% CPU Auslastung . AWT, Swing, JavaFX & SWT 3
B imageicon relativer Pfad AWT, Swing, JavaFX & SWT 5
F ImageIcon Größe ändern AWT, Swing, JavaFX & SWT 29
M ImageIcon / .paintIcon() AWT, Swing, JavaFX & SWT 2
M Problem mit ImageIcon in einer JTable AWT, Swing, JavaFX & SWT 2
D JButton einen neuen ImageIcon setzen? AWT, Swing, JavaFX & SWT 2
R resize ImageIcon AWT, Swing, JavaFX & SWT 7
B Problem mit ImageIcon/Swing in Linux AWT, Swing, JavaFX & SWT 6
K ImageIcon fehler ? AWT, Swing, JavaFX & SWT 4
M ImageIcon laden? AWT, Swing, JavaFX & SWT 2
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben