Bild auf Knopfdruck

Status
Nicht offen für weitere Antworten.

Flocke

Mitglied
Gerade dachte ich weiter gekommen zu sein mit meinem Programm und schon stehe ich wieder vor einer Hürde.
Ich verstehe nicht, wieso lässt sich ein Icon einfach mit
Code:
 JLabel.setIcon(new ImageIcon("bild.png"));
setzen, wenn ich es aber auf die gleiche Weise über den MouseListener aufrufe, passiert gar nichts. Oder übergebe ich das Bild verkehrt?
Hier mein Code.

Code:
private Panel p1, p2;

	private JLabel jk1;
	
	IconTest(){
	p1 = new Panel();
	p1.setLayout(new FlowLayout());

	p2 = new Panel();
	p2.setLayout(new GridLayout(15,4));

	JLabel jl1 = new JLabel();
	jl1.setIcon(new ImageIcon("bild.png"));
	
	jl1.addMouseListener(new MouseAdapter(){
	  	public void mouseClicked(MouseEvent e){ setzeBild(0);}});
         p1.add(jl1);

         // ... hier kommen weitere JLabels mit Bildern drauf

         add("South", p1);
	add("Center", p2);
         }

         public void setzeBild(int a){

		switch(a){
			case 0: jk1 = new JLabel(); 
				   jk1.setImage(new ImageIcon("bild.png"));
				   p2.add(jk1);
				   break;
                           // case 1: ... usw.
		}
	}
Ich habe zwei Panels: p1 und p2. In p1 werden von Anfang an Bilder geladen. In p2 sollen sie erst dann erscheinen, wenn auf ein Bild aus p1 geklickt wurde. Und gerade das funktioniert nicht. Ich glaube es liegt daran, wie ich das Bild übergebe, aber wie mach ich das richtig? Habe schon so viel über das Laden von Bildern gelesen und ausprobiert, aber bis jetzt leider ohne Erfolg.
🙁
Kann mir da einer weiter helfen :?: Vielen Dank
 
Hallo L-ectron-X.
Danke für deine Meldung. Ich hatte deinen Beitrag bereits gelesen und ausprobiert. Es funktioniert ja schön und gut, aber mein Problem ist, dass ich das Bild nicht auf den Button, sondern in die Mitte des Frames laden möchte. Ich weiss, wie ich es mit drawImage mache, aber da muss man für jedes Bild neue Koordinaten ausrechnen. Ich wollte hingegen, dass man den zentralen Bereich mit Bildreihen von 4 Bildern pro Reihe gleichmässig auffüllt. Zu diesem Zweck habe ich einen zweiten Panel mit GridLayout angelegt und wollte die Bilder dort nach und nach reinpacken. Aber wie? So wie ich es versucht habe scheint es nicht zu funktionieren.
Wäre lieb, wenn ich auch dafür einen Tipp kriegen würde.
 
Das von mir gezeigte Beispiel funktioniert nicht nur mit JButtons, sondern auch mit JLabels.
Lege also in dein GridLayout eine entsprechende Anzahl von JLabels und setze die Bilder auf die JLabels.
 
Ich hab's endlich hingekriegt. Ich hatte nur die Methode panel.validate(); anwenden müssen. Trotzdem danke, danke, danke.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben