Combo mit 2 Variablen. Eine davon nicht sichtbar.

Status
Nicht offen für weitere Antworten.

ZZHAT

Mitglied
Hallo,
ich habe eine Combo mit Daten aus einer DB gefüllt.

Code:
		    for (int i = 0; i < count; i++)
		    {
		       rs.next();
		       combo.add(rs.getString(getRow));
		    }

Doch habe ich mir das etwas anders vorgestellt.

Ich möchte nicht die sichtbare Variable, die selectiert wurde weiter verarbeiten
sondern eigentlich die DB-ID zu dieser Variablen, die ich aber gar nicht anzeigen lassen will.

Ich habe zwar gelesen, das man auch einen Index selber setzen kann, jedoch kann ich den ja nicht
willkührlich auf einen Wert setzen. Eine andere Variante habe ich nicht gefunden.
Vielleicht weiss jemand Rat!?

Viele Grüße
ZZHAT
 
Snapes schlauer Tip #123:
Füge der ComboBox keine Strings zu, sondern Objekte, und überschreibe in der zugehörigen Klasse die Methode toString, in der die gewünschte Anzeige in der Combobox zusammengestellt wird.
 
bzw. du machst dir ein kleines abstractModel, hab schon so was ähnliches reingepostet, irgendwo, musst halt mein posts durchschauen.
beim abstracten kannst dir auch nette bildchen dazu machen und so viele verborgen variablen dazuspeichern wie du willst, musst sie halt im model als "private" definieren
 
😀 jop den mein ich, ein abstractes combo model ist nicht viel anders. auf sun hompage gibts sicher was dazu. kannst dann die comboBox nach belieben gestalten. musst nur aufpassen das die Standard Methoden des ComboModels implementierst. Sieht wild aus ist aber nicht so tragisch :applaus:
 
Snape hat gesagt.:
Ich schwöre immer noch auf http://www.codeguru.com/java/Swing/JComboBox/index.shtml
Auf der Site gibts noch eine Menge anderer Swing-Spezialitäten, u.a. JTable und JTree

Ja, die Site ist auch sehr informativ. Danke für den Link!

Durch lesen und etwas Probieren hab ich noch ein ganz simples und natürlich nicht ganz so flexibles Bespiel
gebastelt. Naja, wahrscheinlich gibts das Beispiel schon irrgentwo. 🙂

Code:
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.SelectionEvent;

public class comboTest extends Composite {

	private Combo combo;
	public comboTest(Composite parent, int style) {
		super(parent, style);
		combo = new Combo(this, SWT.NONE);
		combo.setItems(new String[] { "Deutschland", "England" });
		combo.setData("England", "5");
		combo.setData("Deutschland", "1");
		combo.addSelectionListener(new SelectionListener() {
		    public void widgetSelected(SelectionEvent e) {
		        System.out.println("getData : " + combo.getData(combo.getText()));
		    }
		    public void widgetDefaultSelected(SelectionEvent e) {
		    }
		});
		combo.setBounds(30, 35, 165, 20);
		//
	}

	public void dispose() {
		super.dispose();
	}

	protected void checkSubclass() {
	}
}

Für anspruchslose Aufgaben sicher gut geeignet.
Braucht man mehr als eine verdecke Variable (Value) ist es nicht zu gebrauchen.

Viele Grüße
ZZHAT
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben