tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
948
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sonne86 Sonne86 ist offline Rookie
    Registriert seit
    Jun 2010
    Beiträge
    9
    .....................
    Geändert von Sonne86 (10.06.10 um 21:36 Uhr)
     

  2. #2
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    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
     

  3. #3
    Sonne86 Sonne86 ist offline Rookie
    Registriert seit
    Jun 2010
    Beiträge
    9
    Vielen Dank für deine Antwort...
    habs leider net hinbekommen..
     

  4. #4
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    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
     

  5. #5
    Sonne86 Sonne86 ist offline Rookie
    Registriert seit
    Jun 2010
    Beiträge
    9
    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)
     

  6. #6
    Avatar von Carron
    Carron Carron ist offline Mitglied Silber
    Registriert seit
    May 2010
    Ort
    Berlin
    Beiträge
    61
    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
     

  7. #7
    Sonne86 Sonne86 ist offline Rookie
    Registriert seit
    Jun 2010
    Beiträge
    9
    vielen lieben Dank

    Jetzt klappts JUHU bin happy
     

Ähnliche Themen

  1. SWT Table Row mit Textfeld und Combo löschen
    Von drone68 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 01.09.10, 21:30
  2. Problem mit combo box leeren/füllen
    Von Tobias Köhler im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 09.08.07, 16:32
  3. Textfeld automatisch füllen
    Von silkeR im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 23.08.06, 09:49
  4. Textfeld per Knopfdruck füllen
    Von Crach im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 30.04.06, 23:56
  5. Combo Box füllen
    Von lindin im Forum VisualStudio & MFC
    Antworten: 41
    Letzter Beitrag: 25.08.04, 10:58