ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
948
948
EMPFEHLEN
-
.....................
Geändert von Sonne86 (10.06.10 um 21:36 Uhr)
-
Hallo
Erstens: ich würde die Textfelder lieber mit setEditable(false) sperren, da man dann - im Gegensatz zu setEnabled(false) - noch reinklicken und die Inhalte kopieren kann (sofern man das erlauben möchte, dass jemand zum Beispiel die Artikelnummer rauskopiert).
Zweitens zu deiner Frage:
Ich sehe keinen Grund, warum dir ein normaler AuswahlListener nicht helfen sollte.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// auf die Auswahl von ComboBox-Elementen (Artikeln) reagieren modell.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { // ausgewaehlten Artikel entsprechend ComboBox-Auswahl holen final Artikel selected = produktkatalog[modell.getSelectionIndex()]; // Artikelnummer uebernehmen artikelNr.setText(Integer.toString(selected.getArtikelnr())); // Name der Artikelfarbe anzeigen farbe.setText(selected.getFarbe()); // Artikelfarbe darstellen farbBeispiel.setBackground(farben.get(selected.getFarbe())); // und so weiter } });
Da du ja die ComboBox genau in der Reihenfolge befüllst in der die Artikel in deinem produktkatalog-Array liegen, kannst du die Position in der ComboBox einfach übertragen.
Vorzugsweise solltest du vielleicht deinen Produktkatalog alphabetisch nach den Bezeichnungen sortieren (vor dem Befüllen der ComboBox natürlich), sofern diese nicht schon in der korrekten Sortierung irgendwo herkommen (z.B. deine Datenbank?).
Sollten die Artikel unsortiert bei dir ankommen, kannst du soetwas machen:
Code java:1 2 3 4 5 6 7
Arrays.sort(produktkatalog, new Comparator<Artikel>() { // vergleiche zwei Artikel miteinander public int compare(Artikel artikelEins, Artikel artikelZwei) { // vergleiche anhand des enthaltenen Bezeichnungstextes return artikelEins.getBezeichnung().compareTo(artikelZwei.getBezeichnung()); } });
Ich hoffe es hilft
Schönes Wochenende,
Carron
-
Vielen Dank für deine Antwort...
habs leider net hinbekommen..
-
Hey Sonnenschein,
nicht aufgeben
Woran haperts denn noch? Ohne konkrete Hinweise kann dir schlecht geholfen werden.
Ins Blaue ratend kann ich nur einen Fehler beschreiben, den ich kürzlich bei einer ComboBox hatte:
Ich habe aus einem anderen Listener heraus einen Eintrag in der ComboBox mittels select() ausgewählt und danach meine Methode aufgerufen, die auch in meinem SelectionListener ausgeführt wurde, da der nicht durch select() aktiviert wird.
Allerdings war da noch immer der alte Eintrag ausgewählt, weil er sich im Thread verhaspelt hat.
Erst der folgende Zwang zur Thread-Einheitlichkeit hat's dann bei mir gelöst:
Code java:1 2 3 4 5 6 7 8
final int index = 5; getDisplay().asyncExec(new Runnable() { public void run() { comboBox.select(index); // und dann der Inhalt meines SelectionListeners comboEntrySelected(); } });
Darüber hinaus wüsste ich nicht, wie ich dir helfen kann...
Grüße
Carron
-
Also wenn ich den SelectionListener so einbaue, dann bekomme ich folgende Fehlermeldungen:
produktkatalog[modell.getSelectionIndex()]
Meldung:
The type of the expression must be an array type but it resolved to ArrayList<Moebel>
ToString (bei Farbe)
--> Farbe ist ein String Attribut
Meldung:
The method toString(int) in the type Integer is not applicable for the arguments (String)
Wenn ichs richtig versteh, brauch ich Farbe als Int Attribut... aber mag ich ja als String haben, heißt es dann nicht ToString sondern anderst?
Code java:1 2 3 4 5 6 7 8 9 10 11 12
private void comboEntrySelected() { modell.addSelectionListener(new SelectionAdapter() { public void widgetSelected(final SelectionEvent event) { // ausgewaehlten Artikel entsprechend ComboBox-Auswahl holen final Artikel selected = produktkatalog[modell.getSelectionIndex()]; // Artikelnummer uebernehmen artikelNr.setText(Integer.toString(selected.getArtikelnr())); // Name der Artikelfarbe anzeigen farbe.setText(Integer.toString(selected.getFarbe())); } });
Hast du ne Idee was ich falschgemacht hab?Geändert von Sonne86 (08.06.10 um 00:58 Uhr)
-
ich hatte angenommen, dass dein produktkatalog als Array vorliegt und nicht als ArrayList.
Da dem aber so ist sollte dieser SelectionListener es nun tun:
Code java:1 2 3 4 5 6 7 8 9 10 11 12
// auf die Auswahl von ComboBox-Elementen (Artikeln) reagieren modell.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { // ausgewaehlten Artikel entsprechend ComboBox-Auswahl holen final Moebel selected = produktkatalog.get(modell.getSelectionIndex()); // Artikelnummer uebernehmen artikelNr.setText(Integer.toString(selected.getArtikelnr())); // Name der Artikelfarbe anzeigen farbe.setText(selected.getFarbe()); } });
In diesem Fall gehe ich davon aus, dass produktkatalog vom Typ ArrayList<Moebel> ist und
Moebel.getFarbe() einen String liefert.
Gruß
Carron
-
vielen lieben Dank

Jetzt klappts JUHU bin happy
Ähnliche Themen
-
SWT Table Row mit Textfeld und Combo löschen
Von drone68 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 01.09.10, 21:30 -
Problem mit combo box leeren/füllen
Von Tobias Köhler im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 09.08.07, 16:32 -
Textfeld automatisch füllen
Von silkeR im Forum Visual Basic 6.0Antworten: 9Letzter Beitrag: 23.08.06, 09:49 -
Textfeld per Knopfdruck füllen
Von Crach im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 30.04.06, 23:56 -
Combo Box füllen
Von lindin im Forum VisualStudio & MFCAntworten: 41Letzter Beitrag: 25.08.04, 10:58





Zitieren
Login





