Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    jtable: evidenziare le righe

    Ciao a tutti...

    io devo evidenziare alcune righe di una tabella, ed utilizzo questa classe come render. Gli indici delle righe da evidenziare gli vengono passate con l'array celleevidenziate[].
    il problema è ke a me non mi evidenzia alcuna riga.

    Codice PHP:
    public class MioCellRenderer extends DefaultTableCellRenderer {

        public 
    MioCellRenderer(){
            
    super();
        }

        public 
    Component getTableCellRendererComponent(JTable tableObject value,  boolean isSelectedboolean hasFocusint rowint columnint[] celleevidenziate) {

    Component cell super.getTableCellRendererComponent (tablevalueisSelectedhasFocusrow1);


    for(
    int riga=0riga<table.getRowCount(); riga++){
         
        for(
    int j=0j<100j++)
            
            if(
    celleevidenziate[j]!=-1)
             if(
    riga==celleevidenziate[j]){
                
    cell.setBackground(Color.blue);
             }
             else
                 
    cell.setBackground(Color.white);
       }

    return 
    cell;
        }

    http://www.myspace.com/lacerhate

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

    Re: jtable: evidenziare le righe

    Originariamente inviato da ddr.house
    io devo evidenziare alcune righe di una tabella, ed utilizzo questa classe come render. Gli indici delle righe da evidenziare gli vengono passate con l'array celleevidenziate[].
    il problema è ke a me non mi evidenzia alcuna riga.
    Diverse cose ti "sfuggono". Primo: il getTableCellRendererComponent che hai scritto non fa l'override corretto, perché hai aggiunto un parametro int[] celleevidenziate che non centra nulla. La signature di quel metodo non la devi cambiare!!!
    Secondo: non hai compreso bene come funziona un renderer. Quel ciclo for(int riga=0; riga<...... non ha senso e non va bene.

    Ogni volta che Swing deve disegnare 1 cella, viene invocato il renderer associato al tipo della colonna. E il renderer deve semplicemente preparare il componente (e in genere il renderer è-un componente) e restituirlo.

    Se vuoi associare un qualche stato, per esempio di "colorazione" particolare della cella, allora hai diverse possibilità. Puoi fare in modo che questa informazione "extra" faccia parte del value ma questo comporta un cambiamento nella struttura dati del table model (se ad esempio prima come value avevi un String, ora dovresti avere un tuo oggetto che contiene String+informazione extra). Oppure puoi fare in modo che la informazione extra faccia parte dello stato del renderer.

    In ogni caso devi prestare attenzione a quando "scatenare" il repaint. Generalmente è il table model che "scatena" l'aggiornamento da parte della view tramite uno dei metodi fireXXX() di AbstractTableModel.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Oppure puoi fare in modo che la informazione extra faccia parte dello stato del renderer.
    Come faccio a fare questo? ... dovrei per forza passare alla mia classe MioCellRenderer qualcosa che gli dica quali righe colorare.
    http://www.myspace.com/lacerhate

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 © 2026 vBulletin Solutions, Inc. All rights reserved.