Image laden im Panel ?

Status
Nicht offen für weitere Antworten.

Triopoly

Mitglied
Hey,
kann man auf ein Panel ein Image laden? Ich kenn das nur in der Klasse paint. Jetzt möchte ich aber nicht mit awt sondern mit swing programmieren. Weis aber leider nicht ob man auf ein Panel ein Bild laden kann?!
Geht das oder wie macht man das sonst bei swing?

Hoffe ihr könnt mir helfen :wink:

Triopoly
 

Illuvatar

Top Contributor
Du kannst ein ImageIcon über den Konstruktor auf das JPanel tun. Ansonsten musst du statt paint paintComponent überschreiben.
 

Triopoly

Mitglied
Danke.
Hab das jetzt mit ImageIcon versucht, aber klappt noch nicht so wirklich .. krieg zwar keine Fehlermeldung aber das Bild wird nicht angezeigt. Hab da bestimmt einiges falsch gemacht, weil ich noch nie was mit ImageIcon gemacht hab.
Seht ihr den Fehler?

Code:
		componenten = this.getContentPane();
		componenten.setLayout(new BorderLayout());
		componenten.setBackground(new Color(206,236,208));
		
		panel1 = new JPanel();
		panel1.setBackground(new Color(123,204,130));
		panel1.setLocation(0,0);
		panel1.setSize(550,100);
		panel1.setVisible(true);
		panel1.setLayout(new FlowLayout());
			ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
			panel1.add(new JLabel(logo,JLabel.CENTER),BorderLayout.WEST);
		componenten.add(panel1,BorderLayout.NORTH);

Hoffe ihr könnt mir helfen,
Triopoly
 

Kian

Aktives Mitglied
Versuch mal das:

Code:
Graphics p = panel1.getGraphics();
p.drawImage(...);
panel1.update(p);
 

Triopoly

Mitglied
Erstmal Danke!!
Aber klappen tut es leider immer noch nicht.
Ich hab das Bild auf jeden Fall richtig gespeichert, es befindet sich in dem gleichen Ordner wie die Klasse. Also müsste der Pfad so richtig sein.
Bei mir wird das Panel1 nicht mehr angezeigt wenn ich versuche das Bild in das Panel einzufügen. Ohne das ich das Bild einbinde läuft alles super, also muss es ja sowies aussieht daran liegen.

Also habt Ihr noch ne Idee was falsch sein kann??

Danke. Triopoly
 

Wildcard

Top Contributor
Setz mal die Größe des JLabels gleich der Größe des ImageIcons und lass dir diese ausgeben
 

Triopoly

Mitglied
Hey,
hab das mit der Größe jetzt ausprobiert.

Code:
	panel1 = new JPanel();
		panel1.setBackground(new Color(123,204,130));
		panel1.setLocation(0,0);
		panel1.setSize(550,100);
		panel1.setVisible(true);
		panel1.setLayout(new FlowLayout());
			ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
			JLabel label1 = new JLabel(logo);
			label1.setSize(550,100);
			label1.setLocation(0,0);
		panel1.add(label1,BorderLayout.WEST);
			
		componenten.add(panel1,BorderLayout.NORTH);

Aber klappt leider immer noch nicht.
Hab aber jetzt auch mal versucht auf das Panel einen Button zusetzen und das klappt auch nicht?!
Also irgendwas muss ich da total falsch gemacht haben... wüsste nur gern was, damit ich endlich mit meinem Programm weiter machen kann!!
Kann mir sonst irgendwer ein Bsp für ein Image auf nem Panel geben? Falls ich hier den Fehler nicht finde probier ich dann das mal aus.

mfg
Triopoly
 

Wildcard

Top Contributor
Mit einem LayoutManager funktioniert setSize nicht mehr. Benutz setPreferredSize.
Machs diesmal aber bitte genau so wie ich's vorgeschlagen hab:
Hol dir die Größe vom ImageIcon, setz das als PreferredSize für das Label, und lass sie dir ausgeben.
So kannst du direkt sehen ob das Bild überhaupt korrekt geladen wurde...
 

Triopoly

Mitglied
Also hab das jetzt ausprobiert. Hoffe mal du meintest auch so.
Das Panel wird jetzt so wies aussieht im Bereich das Labels gezeigt. Aber der Rest des Panels ist nicht zu sehn.
Das Bild ist auf dem Label auch immer noch nicht sichtbar.

Code:
			ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
			int hoehe = logo.getIconHeight();
			int breite = logo.getIconWidth();
			JOptionPane.showInputDialog("height: " + hoehe + "width: " + breite);   
			JLabel label1 = new JLabel(logo);
			label1.setPreferredSize(new Dimension(breite,hoehe));
		panel1.add(label1,BorderLayout.WEST);
			
		componenten.add(panel1,BorderLayout.NORTH);
 

Wildcard

Top Contributor
Code:
JOptionPane.showInputDialog("height: " + hoehe + "width: " + breite);
Und die Größe die du angezeigt bekommst stimmt?
Wenn ja müsste ich mehr von deinem Code sehen weil das soweit eigentlich richtig ist.
 

Triopoly

Mitglied
Ja, die Größe die ausgegeben wird ist richtig.
Zeig dir einfach mal das ganze Programm, vielleicht hab ich ja weiter oben irgendwo einen Fehler gemacht?

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.awt.image.BufferedImage; 



public class GagamehlO  extends JFrame 
{
	private Container componenten; //Auf diesen Container werden alle Componenten des Frames abgelegt
	private JPanel panel1,panel2;
	public BufferedImage buffimg;    
	
	
		
	public GagamehlO()//Konstruktor
	{
		super("Platzhalter"); 
		this.setLocation(200,200);
		this.setSize(550,400);
		
      		this.setVisible(true);
		Fensterschließen();
		setComponents();

	}//konstruktor end
	
	public void setComponents()
	{
		componenten = this.getContentPane();
		componenten.setLayout(new BorderLayout());
		componenten.setBackground(new Color(206,236,208));
		
		
		
		
		//Panel Oben-Load-Settings
		panel1 = new JPanel();
		panel1.setBackground(new Color(123,204,130));
		panel1.setLocation(0,0);
		panel1.setSize(550,100);
		panel1.setVisible(true);
		panel1.setLayout(new FlowLayout());
			ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
			int hoehe = logo.getIconHeight();
			int breite = logo.getIconWidth();
			JOptionPane.showInputDialog("height: " + hoehe + "width: " + breite);   
			JLabel label1 = new JLabel(logo);
			label1.setPreferredSize(new Dimension(breite,hoehe));
		panel1.add(label1,BorderLayout.WEST);
			
		componenten.add(panel1,BorderLayout.NORTH);
		
		
		//Strich zwischen Panel1 und dem Hauptpanel
		panel2 = new JPanel();
		panel2.setBackground(Color.black);
		panel2.setLocation(0,100);
		panel2.setSize(550,2);
		panel2.setVisible(true);
		panel2.setLayout(new FlowLayout());		
		componenten.add(panel2,BorderLayout.NORTH);
		
	}
	
	 public void Fensterschließen()
    	{
        	addWindowListener(new WindowAdapter(){            
            	public void windowClosing(WindowEvent e)
           	 {
                	e.getWindow().dispose();
             	   	System.exit(0);
            	}
        	});
    	}
	

	public static void main(String[] args) 
	{
		GagamehlO g1 = new GagamehlO();
	}
}

Vielleicht sieht ja jetzt einer den Fehler?
Wäre echt super damit ich endlich weiter machen kann, außerdem will ich ja auch wissen was falsch is damit ich nicht denselben Fehler nochmal mache ...

mfg,
Triopoly
 

Wildcard

Top Contributor
puh, wo fang ich an?
Code:
    public void Fensterschließen()
       {
           addWindowListener(new WindowAdapter(){           
               public void windowClosing(WindowEvent e)
               {
                   e.getWindow().dispose();
                      System.exit(0);
               }
           });
       }
1) Methoden werden klein geschrieben
2) mit Swing braucht man das nicht mehr zu machen. Einfach:
Code:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Code:
      panel1.setLayout(new FlowLayout());
         ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
         int hoehe = logo.getIconHeight();
         int breite = logo.getIconWidth();
         JOptionPane.showInputDialog("height: " + hoehe + "width: " + breite);   
         JLabel label1 = new JLabel(logo);
         label1.setPreferredSize(new Dimension(breite,hoehe));
      panel1.add(label1,BorderLayout.WEST);
Da panel1 das FlowLayout benutzt bringt
Code:
 panel1.add(label1,BorderLayout.WEST);
nichts.


Code:
      panel1.setLocation(0,0);
      panel1.setSize(550,100);
      panel1.setVisible(true); 

      panel2.setLocation(0,100);
      panel2.setSize(550,2);
      panel2.setVisible(true);
1) Da 'componenten' einen LayoutManager verwendet werden diese angaben sowieso ignoriert.
2) panels sind per default visible.
Code:
      componenten.add(panel1,BorderLayout.NORTH); 
      componenten.add(panel2,BorderLayout.NORTH);
Du kannst nicht 2 Komponenten auf 'NORTH' legen

jetzt zum eigentlich Fehler :D
Code:
     this.setLocation(200,200);
      this.setSize(550,400);
      
            this.setVisible(true);
      Fensterschließen();
      setComponents();
erst visble machen wenn die Komponenten schon draufliegen!
Also
Code:
setComponents();
setVisible(true);
 

GagamehlO

Aktives Mitglied
Ich bin der Meinung das, das setVisible aber auch schon vorher gemacht werden kann
bevor die Componenten dann drauf liegen.
Hatte nämlich auch mal einen Fehler wo ich dachte das würde daran liegen, war dann aber doch nicht der Fehler und ich konnte die Componenten nachher trotzdem sehen, obwohl ich das Frame schon sichtbar gemacht hatte.
Aber natürlich ist es besser erst mal alles aufs Frame zu setzen und es dann Sichtbar zu machen, damit es im Extrem-Fall auch keine Verzögerungen geben kann.


mfg GagamehlO
 

Wildcard

Top Contributor
GagamehlO hat gesagt.:
Ich bin der Meinung das, das setVisible aber auch schon vorher gemacht werden kann
bevor die Componenten dann drauf liegen.
mfg GagamehlO
Natürlich kann man, WENN man dann auch validiert und neuzeichnet...
 

Silkstring

Mitglied
ich habe euer beispiel auch ausprobiert, aber ich bekomme eine NullPointerException bei
Code:
image = new ImageIcon(getClass().getResource(pfad));

die NullPointerException kommt daher das getClass() null ist,
aber das kann doch eigentlich garnicht sein oder?

EDIT: kleiner irrtum meinerseits, getResource(pfad) war null, obwohl der pfad richtig geschrieben wurde.
ich hab das ganze nochmal so probiert nun, aber er zeigt das bild nicht an:
Code:
image = new ImageIcon(pfad);
 
G

Guest

Gast
Ich hab es jetzt geschafft das das Image sichtbar ist. Lag wirklich an dem setVisible, habe es jetzt so gelöst :

Code:
	setComponents();
	this.setVisible(true);

und

Code:
	        panel1 = new JPanel();
		panel1.setBackground(new Color(123,204,130));
		panel1.setLayout(null);
		panel1.setBounds(0,0,550,120);
			ImageIcon logo = new ImageIcon(getClass().getResource("logo.jpg"));
			JLabel label1 = new JLabel(logo);
			int hoehe = logo.getIconHeight();
                        int breite = logo.getIconWidth(); 
			label1.setLayout(null);
			label1.setBounds(20,20,breite,hoehe);				
		panel1.add(label1);


Nochmal danke für die schnelle Hilfe.
Triopoly
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
G Image laden aber nicht in Applet Klasse AWT, Swing, JavaFX & SWT 2
S Problem beim Image laden AWT, Swing, JavaFX & SWT 4
R Image in JPanel/JLabel laden? AWT, Swing, JavaFX & SWT 11
S Laden eines gif oder jpg in ein Image AWT, Swing, JavaFX & SWT 3
MiMa Speichern von Image als JPG auf Festplatte AWT, Swing, JavaFX & SWT 9
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
T Swing Buffered Image anzeigen AWT, Swing, JavaFX & SWT 45
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
S Stretch Image in ImageView AWT, Swing, JavaFX & SWT 4
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
L JavaFX Image mit Blureffect AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
B Graphics to Image AWT, Swing, JavaFX & SWT 3
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
T Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
I Image im PopupMenu vom SystemTray AWT, Swing, JavaFX & SWT 8
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
M Image in JTable einfügen AWT, Swing, JavaFX & SWT 9
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
G JavaFX Image vergrößern AWT, Swing, JavaFX & SWT 5
U Image mit Zeichenbereich rotieren AWT, Swing, JavaFX & SWT 3
P Speicherproblem SWT.Image in Nebula-Gallery AWT, Swing, JavaFX & SWT 3
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
I Image Button AWT, Swing, JavaFX & SWT 4
U IntBuffer zum Image konvertieren. AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Slideshow (DoubleBuffering und Image transformieren/bewegen) AWT, Swing, JavaFX & SWT 6
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Image.getScaledInstance() vs. Netzwerkverbindung??? AWT, Swing, JavaFX & SWT 2
reibi SWT Image viewer AWT, Swing, JavaFX & SWT 2
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
M Image wird nicht neugezeichnet nach dem Wechsel AWT, Swing, JavaFX & SWT 2
lumo SWT Image Pattern AWT, Swing, JavaFX & SWT 5
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
M Swing Image in JPanel als Componente AWT, Swing, JavaFX & SWT 2
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 2
0 Mousecurser mit Image hinterlegen AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
N Java Choice Bilderausgabe - images - - image - AWT, Swing, JavaFX & SWT 2
D iText PdfPCell mit Image AWT, Swing, JavaFX & SWT 3
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
S Button mit Image AWT, Swing, JavaFX & SWT 7
A Skaliertes Image pixelweise bearbeiten AWT, Swing, JavaFX & SWT 6
L Swing Image zur Laufzeit verändern AWT, Swing, JavaFX & SWT 6
F SWT GC drawText auf halbtransparentem Image AWT, Swing, JavaFX & SWT 21
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
C Image mit Graphics2D zeichnen AWT, Swing, JavaFX & SWT 9
C Image performant skalieren AWT, Swing, JavaFX & SWT 5
D SWT Image Farbtiefe AWT, Swing, JavaFX & SWT 2
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
lumo SWT Composite + Image + zeichnen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
D Image Viewer gesucht AWT, Swing, JavaFX & SWT 5
Kr0e Image schärfen AWT, Swing, JavaFX & SWT 2
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
T Image auf Image zeichnen AWT, Swing, JavaFX & SWT 2
E Warum ist offscreen (mit Image) schneller? AWT, Swing, JavaFX & SWT 11
G Swing Image speichern / 0 Byte AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen


Oben