CellRenderer

di il
8 risposte

CellRenderer

Bene ultima cosina
se ho capito bene, per fare una cosa come tabledialogeditdemo devo creare diversi pane alla creazione dei miei oggetti veicolo e buttarci dentro il colore giusto?

8 Risposte

  • Re: CellRenderer

    KuroKami69 ha scritto:


    se ho capito bene, per fare una cosa come tabledialogeditdemo devo creare diversi pane alla creazione dei miei oggetti veicolo e buttarci dentro il colore giusto?
    Sinceramente non si è capito cosa vuoi fare esattamente. E nemmeno si è capito se hai capito cosa è un table cell renderer e come funziona.
  • Re: CellRenderer

    Nella mia tabella, al posto della scritta del colore, volevo metterci il colore vero e proprio, come in quella tabellina la.
    credo che il cell renderer, da quello che ho capito, renderizzi la tabella. cambia la "grafica" della tabella. credo
  • Re: CellRenderer

    KuroKami69 ha scritto:


    credo che il cell renderer, da quello che ho capito, renderizzi la tabella. cambia la "grafica" della tabella. credo
    Il renderer fornisce un componente (che generalmente per "giocare al risparmio" di risorse è sempre lo stesso oggetto) che viene di volta in volta ad ogni richiesta impostato e poi letteralmente "stampato" nella cella. Quelli che vedi nelle celle infatti non sono "veri" componenti ma solo delle "proiezioni", per così dire.

    KuroKami69 ha scritto:


    Nella mia tabella, al posto della scritta del colore, volevo metterci il colore vero
    Ok. Bisogna solo valutare in base a cosa cambiare il colore. Cioè se prima per una colonna di tipo String.class facevi restituire es. "rosso" come stringa e ora vuoi riempire la cella di rosso allora la questione è: puoi certamente fare un renderer che fa lo switch sul colore es. se "rosso" allora imposti un java.awt.Color che rappresenta il rosso. Ma è brutta e poco pulita come soluzione, specialmente se tutto questo lo fai nel renderer.

    Altrimenti sarebbe da risolvere meglio a livello object-oriented: una classe es. ColoreVeicolo che contiene il java.awt.Color e il nome del colore.
  • Re: CellRenderer

    Nono mi son espresso male.
    attualmente ho già una classe che, generato un colore RGB, mi restituisce la stringa
    però è bruttino perché ci sono un sacco di colori strani.
    volevo quindi che nella colonna "Colore" apparisse il panel colorato del colore dell'auto.
    quindi pensavo che mi basta intanto trasformare la colonna da String.class a Color.class, o una roba simile, e nel getvalueat inserisco un pane che prende il colore dell'auto tipo, la butto la molto grezzamente
    
    ....
    case 15: autoColor(RGB)
    ....
    
    dove autoColor è un metodo che prende in ingresso i 3 colori, mi crea un pane, e lo colora del colore uscito, e lo ritorna per mostrarlo nel caso.
    poi in veicolo mi farò un metodo che mi ritorna il colore rgb da passare ad autoColor
  • Re: CellRenderer

    KuroKami69 ha scritto:


    Nono mi son espresso male.
    E io invece ho capito benissimo!

    KuroKami69 ha scritto:


    attualmente ho già una classe che, generato un colore RGB, mi restituisce la stringa
    però è bruttino perché ci sono un sacco di colori strani.
    volevo quindi che nella colonna "Colore" apparisse il panel colorato del colore dell'auto.
    quindi pensavo che mi basta intanto trasformare la colonna da String.class a Color.class, o una roba simile, e nel getvalueat inserisco un pane che prende il colore dell'auto tipo, la butto la molto grezzamente
    Per settare fore/back-ground di un componente hai bisogno di un java.awt.Color. Poi come ci arrivi a questo e (in base a) cosa esponi sulla colonna ... è un altro discorso.
  • Re: CellRenderer

    E allora non ho capito io quello che intendevi te. per settare il background non mi basta semplicemente passargli il colore da usare? perché devo farmi una classe apposita?
  • Re: CellRenderer

    KuroKami69 ha scritto:


    per settare il background non mi basta semplicemente passargli il colore da usare? perché devo farmi una classe apposita?
    Non è che "devi" ... era una soluzione, specialmente se volevi (per vari motivi) tenere correlati il colore e il nome del colore. Ma se dal table model puoi già far uscire il java.awt.Color, allora esponi questo e basta, punto, e il tuo renderer userà questo "value" direttamente per colorare la cella.
  • Re: CellRenderer

    Bhe l'idea era questa, non penso abbia senso tenere il nome del colore se questo poi non viene esposto. anche perché, non usando il nome si ha molta più libertà. secondo me almeno. comunque proverò ad implementare questa cosa.
Devi accedere o registrarti per scrivere nel forum
8 risposte