Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren

Groeg

Mitglied
Hallo Leute!

Ich habe folgendes Problem: Ich möchte eine ArrayList mit dem Generic <Pflanze> mittels einer for-each-Schleife durchgehen und für jedes Objekt "Pflanze" eine anonyme Instanz von JXImageView (aus dem SwingX-Paket) erstellen und mit einem Image aus "Pflanze" belegen. Zur Info: "Pflanze" ist eine Klasse, die als Attribute einen botanischen und einen deutschen Namen besitzt und vier Bilder der Klasse "Image".
Ich habe jetzt schon etwas dortstehen und zwar:

Java:
for(Pflanze currentPflanze : currentArray) {
			
		view.add(new JXImageView().setImage(currentPflanze.getRandomImage()));}

Funktioniert natürlich noch nicht 🙁
Meine Frage ist: Wie erstelle ich eine anonyme Instanz von JXImageView und wie rufe ich die .add-Methode der erstellten Instanz auf?

Vielen Dank für eure Hilfe!

Georg
 
Java Code:
Java:
for(Pflanze currentPflanze : currentArray) {
  view.add(new JXImageView(){
    {
      setImage(currentPflanze.getRandomImage())
    }
  });
}
 
Zuletzt bearbeitet von einem Moderator:
Vorsicht mit Initializer, denn sie sind in Wirklichkeit anonyme abgeleitete Klassen.

Warum nicht einfach:
Java:
for(Pflanze currentPflanze : currentArray) {
  JXImageView iv = new JXImageview();
  iv.setImage(currentPflanze.getRandomImage());
  view.add(iv);
}
 
Danke für eure Hilfe tommysenf und Flown!

Kann ich denn mehrere Instanzen mit dem gleichen Namen erzeugen?
 
Zuletzt bearbeitet:
Was meinst du konkret mit mehrere Instanzen mit dem selben Namen?

Meinst du iv mit selben Namen?
Java:
JXImageView iv = new JXImageview();

Also iv ist nur eine Variable die eine Instanz von JXImageView hält, und jedes mal mit dem new-Operator wird der Variable eine neue Instanz zugewiesen.
 
Ähm ich kann sagen, dass du dir Grundlagen ansehen sollst.

"iv" ist nur eine Art Container, damit du mit der Instanz arbeiten kannst. Bei der for-each-Schleife, wird jedes mal eine neue Instanz erzeugt und vorübergehend in "iv" gehalten. Die Variable hält also nur eine Referenz auf das tatsächliche Objekt. Also macht es genau das, was du wolltest.
 

Neue Themen


Zurück
Oben