Swing JComboBox - Problem bei Darstellen von ImageIcon

Status
Nicht offen für weitere Antworten.

Chimi

Mitglied
Ich versuche seit geraumer Zeit in meiner JComboBox ein JLabel (welches ein ImageIcon enthält) darzustellen. Ich möchte den code auf folgende weise schreiben:

Code:
import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class ImageInComboBox extends JFrame 
{
	public ImageInComboBox()
	{
		ImageIcon belgien = new ImageIcon("Belgien.gif");
		
		Vector<JLabel> v1 = new Vector<JLabel>();
		v1.add(new JLabel(belgien));

		JComboBox cb = new JComboBox(v1);
		add(cb);
				
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 50);
		setLocationRelativeTo(null);
		setVisible(true);		
	}
	
	public static void main(String[] args) 
	{
		new ImageInComboBox();
	}

}

Es wird nur kein Bild ausgegeben, es werden nur Daten zum Bild ausgegeben. :/

Kann mir einer weiter helfen?

Lg chimi
 
Sicher, dass der Pfad zum Icon stimmt?

machmal
Code:
	System.out.println(new File("Belgien.gif").exists());
Wenn da false rauskommt, dann weisste bescheid 😉
 
Ich denke ich weiß woran es liegt.

Beim hinzufügen des Vectors zu der JComboBox wird im HIntergrund die Methode toString() aufgerufen. Was ja auch richtig ist wenn man einen Vector mit String Objekten hätte, oder einen Vector mit Labels wo nur Text enthalten ist.

Aber da mein Vector auch ein Bild enthält, gibt er anstelle des Bildes die Daten des Bildes aus. Wie kann ich verhindern das das passiert?

lg
 
Ich versuche seit geraumer Zeit in meiner JComboBox ein JLabel (welches ein ImageIcon enthält) darzustellen. Ich möchte den code auf folgende weise schreiben:

Code:
import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class ImageInComboBox extends JFrame 
{
	public ImageInComboBox()
	{
		ImageIcon belgien = new ImageIcon("Belgien.gif");
		
		Vector<JLabel> v1 = new Vector<JLabel>();
		v1.add(new JLabel(belgien));

		JComboBox cb = new JComboBox(v1);
		add(cb);
				
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 50);
		setLocationRelativeTo(null);
		setVisible(true);		
	}
	
	public static void main(String[] args) 
	{
		new ImageInComboBox();
	}

}

Es wird nur kein Bild ausgegeben, es werden nur Daten zum Bild ausgegeben. :/

Kann mir einer weiter helfen?

Lg chimi


Java:
import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class ImageInComboBox extends JFrame 
{
	public ImageInComboBox()
	{
		ImageIcon belgien = new ImageIcon("Belgien.gif");
		
		Vector<ImageIcon> v1 = new Vector<ImageIcon>();
		v1.add(belgien);

		JComboBox cb = new JComboBox(v1);
		this.add(cb);
				
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300, 50);
		setLocationRelativeTo(null);
		setVisible(true);		
	}
	
	public static void main(String[] args) 
	{
		new ImageInComboBox();
	}

}

So sollte es gehen. In der DefaultListCellRenderer-Klasse wird überprüft ob das Objekt ein Objekt der Klasse ICON ist. Wenn nicht wird die toString()-Methode aufgerufen. Das führte dazu das er die toString methode der JLabel aufgerufen hat. 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben