Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Combobox textfarbe einzelner Zeilen ändern

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.07.2010
    Beiträge
    5

    Combobox textfarbe einzelner Zeilen ändern

    Hallo
    Ich möchte in einer Combobox einzelne Zeilen in einer anderen Textfarbe darstellen. Hierbei ist es wichtig, dass die Zeilen immer noch einen String enthalten, aber eben in andere Farbe.

    Soweit ich herausgefunden habe, sollte dies über einen eigenen Editor möglich sein. Habe aber damit keinerlei Erfahrung und mit probieren hab ich's auch nicht rausgefunden.

    Wäre toll wenn sich hier jemand auskennt und ein par Tips geben könnte.

    Grüsse, nahum

  2. #2
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    In Swing kannst du HTML-Tags benutzen; da man mit HTML auch Farbe steuern kann, sollte das problemlos möglich sein, indem du als Text z.B. <html><font color="blue">blauer Text</font></html> schreibst.

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.07.2010
    Beiträge
    5
    Besten Dank für den Tip!
    Das mit den HTML-Tags wusste ich nicht und die Combobox frisst die ja wirklich!
    Ich habs mit folgendermassen versucht:
    Code:
    mCtmName_JCombo.addItem(new String("<html><font color='blue'>blauer Text</font></html>"));
    Das Item "blauer Text" erscheint in der Combobox und die Farbe ist tatsächlich blau.

    Danke und Grüsse
    nahum
    Geändert von nahum (26-07-2010 um 23:15 Uhr)

  4. #4
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    1. Kein Ausrufezeichen verwenden
    2. Anführungszeichen escapen
    3. new String("Text") ist nicht nur unnötig, sondern kann AFAIK auch Geschwindigkeitseinbußen bringen.
    So sollte es gehen, hab es aber nicht getestet:
    Code:
    mCtmName_JCombo.addItem("<html><font color=\"blue\">blauer Text</font></html>");

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.07.2010
    Beiträge
    5
    Danke. Den mit dem Ausruffezichen hab ich auch gemerkt (Tipfehler)

    Habe mittlerwielen die Sache so glöst:
    Code:
      public void colorNonDebitors(int[]pIndexesArray){
        String item;
        for(int i = 0; i < pIndexesArray.length; i++){
          item = (String)mNewDebitors_Combo.getItemAt(pIndexesArray[i]);
          mNewDebitors_Combo.removeItemAt(pIndexesArray[i]);
          item = "<html><font color='red'><i>".concat(item).concat("<i></font></html>");
          mNewDebitors_Combo.insertItemAt(item, pIndexesArray[i]);
        }//end for
      }//end methode
    Ich übergebe der Methode ein Int[] mit den Indexes der Elemente in der Combobox die "eingefärbt" werden sollen. Nun werden der Reihe nach die Items an den entprechenden Indexes gelsen, das Item in der Combobox removed, der String eingefärbt und wieder an den gleichen Index in die Combobox geschrieben.
    Das funktioniert so sehr gut und auch noch einigermassen perfomant.

    Das Problem ist nun aber, dass, wenn die Combobox editierbar ist und ich ein Item selektiere, nicht das nur das "eingefärbte" Item als ausgewählt erscheint, sonder der ganze String inklusive HTML-Tags. Ich habs noch nicht probiert aber ich denke für getSelectedItem wird es dasselbe sein.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •