Einträge einer Enumeration in einer ComboBox zeige

Hallo zusammen,

ich habe in meinem Java Programm eine Enumeration, die mehrere Elemente enthält, die ich in einer ComboBox darstellen möchte. Wie kann ich nun die Enumeration an die ComboBox „koppeln“ oder wie füge ich die Elemente vernünftig der ComboBox hinzu?

Vielen Dank,
Gruß pcfreak92

Möchte noch hinzufügen, dass ich an einem Mac mit NetBeans arbeite…

Hallo,

Wie kann ich nun die Enumeration an die ComboBox „koppeln“
oder wie füge ich die Elemente vernünftig der ComboBox hinzu?

z.B. so:

DefaultComboBoxModel model = new DefaultComboBoxModel();
while(enumeration.hasMoreElements())
{
 model.addElement(enumeration.nextElement());
}

JComboBox box = new JComboBox(model);

Gruß
Heavy

Hallo,

DefaultComboBoxModel model = new DefaultComboBoxModel();
while(enumeration.hasMoreElements())
{
model.addElement(enumeration.nextElement());
}

JComboBox box = new JComboBox(model);

Da anscheinend die Enumeration ein Objekt enthält, steht dann in der ComboBox sowas wie: „name:blabla index:4“. Ich möchte aber nur „blabla“ in der ComboBox stehen haben.
Wie geht das? :smile:

Gruß pcfreak92

DefaultComboBoxModel model = new DefaultComboBoxModel();
while(enumeration.hasMoreElements())
{
model.addElement(enumeration.nextElement());
}

JComboBox box = new JComboBox(model);

Da anscheinend die Enumeration ein Objekt enthält, steht dann
in der ComboBox sowas wie: „name:blabla index:4“. Ich möchte
aber nur „blabla“ in der ComboBox stehen haben.
Wie geht das? :smile:

Das hängt vom Objekt ab, wenn die entsprechende Klasse eine getName() Methode anbietet wäre das ein guter Ansatz.

Gruß
Heavy

Da anscheinend die Enumeration ein Objekt enthält, steht dann
in der ComboBox sowas wie: „name:blabla index:4“. Ich möchte
aber nur „blabla“ in der ComboBox stehen haben.
Wie geht das? :smile:

Das kommt darauf an, was für ein Objekt da drin liegt. Eigentlich sollte man den Enum auch parametrisieren, damit sowas klar ist, also beispielsweise:

Enum hans = new Enum();

Du solltest eigentlich auch seit ca. 2004 Kompilerwarnungen kriegen, wenn Du das nicht so machst, aber das nur am Rande. Je nach dem, was da für ein Objekt drin ist, solltest Du das auf nen String casten können, oder mit ‚toString()‘ oder sowas, an den Namen rankommen. Aber hellsehen kann ich leider nicht.

Das hängt vom Objekt ab, wenn die entsprechende Klasse eine
getName() Methode anbietet wäre das ein guter Ansatz.

Falls du das Objekt später über die getSelectedItem() Methode der ComboBox ermitteln willst solltest du evtl. einen eigenen Renderer verwenden, in meinem Beispiel sind die Objekte in der Enumeration vom Typ MyObject mit einer getName() Methode:

box.setRenderer(new DefaultListCellRenderer() {
 public Component getListCellRendererComponent(JList list,
 Object value,
 int index,
 boolean isSelected,
 boolean cellHasFocus) {
 if(value instanceof MyObject)
 {
 MyObject myValue = (MyObject) value;
 return new JLabel(myValue.getName());
 }
 return new JLabel(value != null ? value.toString() : "");
 }

});

Gruß
Heavy

Habe jetzt (ein wenig primitv) die Adressen abrufen lassen und dann diese als String in der ComboBox gespeichert. Zuvor habe ich noch alles mit „replaceAll“ vor der Adresse „gelöscht“ und danach noch den String auf die ersten drei Zeichen gekürzt, sodass aus dem Ursprunngsstring „name:en0 index:4 …“ dann ein „en0“ wird. Es ist nicht gerade professionell aber es funktioniert.

Nun muss ich über das ausgewählte Interface einen Download starten können.
Habe schon ein paar Beispiele gefunden, die mir aber nicht wirklich geholfen haben.
„Socket“ hat bisher am besten ausgesehen, wo ich mittels bsp. „soc.bind()“ den Socket an ein Interface „binden“ kann um danach per „soc.connect()“ zu einer URL verbinden kann. Wie aber kann ich die „Antwort“ speichern, bei z.B. einem Download?

Kann mir jemand an einem einfachen Beispiel erklären, wie ich das am Einfachsten löse?

Vielen Dank,
Gruß pcfreak92

„Socket“ hat bisher am besten ausgesehen, wo ich mittels bsp.
„soc.bind()“ den Socket an ein Interface „binden“ kann um
danach per „soc.connect()“ zu einer URL verbinden kann. Wie
aber kann ich die „Antwort“ speichern, bei z.B. einem
Download?

StreamReader an den Socket kleben. Sollte es sogar von Sun ein Tutorial zu geben.

Hallo!

Jede enum hat eine „Enumeration“.values(), die ein Array mit allen Elementen zurückliefert:

import javax.swing.JComboBox;

public class Father {
 enum Fruit {
 Apple, Banana, Coconut, Grapefruit
 }

 protected void gaga()
 {
 JComboBox box = new JComboBox(Fruit.values());
 for(int i = 0; i 

hat die prüfung zum scjp doch was gebracht \*g\*