Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207

    JComboBox colorare item

    Salve ragazzi, ho un problema con la combobox che vi espongo.
    Possiedo un file xml strutturato in questo modo:

    codice:
    <BELM>
     <BEL valore="T">
      <DESCR>feel(maria,comfort)</DESCR>		 
     </BEL>
     <BEL valore="F">
      <DESCR>isin(maria,goodhealth)</DESCR>		 
     </BEL>
     <BEL valore="T">
       <DESCR>feel(maria,positiveAffect)</DESCR>		 
      </BEL>      
    </BELM>
    nella mia combobox, carico il valore che c'è scritto in DESCR, però vorrei che se l'attributo di BEL ha valore T, allora l'item nella combobox deve essere verde, altrimenti rosso...come si fa questa cosa ?

    grazie..

  2. #2

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JComboBox colorare item

    Originariamente inviato da jin85
    nella mia combobox, carico il valore che c'è scritto in DESCR, però vorrei che se l'attributo di BEL ha valore T, allora l'item nella combobox deve essere verde, altrimenti rosso...come si fa questa cosa ?
    Innanzitutto JComboBox per visualizzare gli elementi si basa su un ListCellRenderer (come per JList). Per fare quello che chiedi dovresti implementarne uno tuo. Non è difficilissimo, basta capire poche cose.
    E tra l'altro se guardi il javadoc di javax.swing.ListCellRenderer trovi anche un esempio minimale (sebbene molto spartano e specifico) di implementazione.

    C'è comunque ancora un'altra questione. Per ogni elemento del combo tu hai 2 dati, una descrizione e un "valore" (che come dici non sarà visibile ma serve sotto sotto per fare dei test e cambiare solo l'aspetto). Questo vuol dire che nel "model" (che sia uno implicito, esplicito es. DefaultComboBoxModel o uno tuo non ha molta importanza ora) non basta avere un String ma devi mettere oggetti di un tuo tipo (es. tanto per non inventarsi chissà che cosa, una classe Bel) che contiene le 2 proprietà.

    Il tuo renderer ovviamente dovrà sapere che i value Object che riceve nel getListCellRendererComponent() sono della tua classe, pertanto farai il cast e quindi userai le proprietà come/dove necessario.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.