Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Gestire celle JTable

  1. #1

    Gestire celle JTable

    Ciao ragazzi,
    esiste una classe capace di farmi gestire le celle di una JTable in maniera "naturale"?

    Sono una cosa antipaticissima.

    Ho cercato di creare una funzione di grado di colorare delle celle a piacimento ( su una tabella già creata ), ma niente da fare. La gestione è davvero troppo ingarbugliata e sembra funzionare in modo anomalo.

    Questo è il codice della funzione che dovrebbe colorare le celle ( i valori negli array servono ad individuare le celle da colorare ):

    Codice PHP:
    public void coloraCella(final int righe[],final int colonne[]){
                for (
    int i=0;i<righe.length;i++){
                       final 
    int indice=i;
                       
    tabella.getColumnModel().getColumn(colonne[i]).
                        
    setCellRenderer(
                            new 
    DefaultTableCellRenderer() {
                                    public 
    Component getTableCellRendererComponent 
                                            
    (JTable tableObject valueboolean isSelected
                                            
    boolean hasFocusint rowint column
                                    {
                                    
    Component cell super.getTableCellRendererComponent (tablevalueisSelectedhasFocusrowcolumn);
                                    
    System.out.println(row " " column);
                                    
                                    if(
    row==righe[indice] && column==colonne[indice]){
                                        
    cell.setBackgroundColor.green );
                                        
    System.out.println("?");
                                    }else{
                                        if (!
    cell.getBackground().toString().equals("java.awt.Color[r=0,g=255,b=0]")){
                                            
    cell.setBackgroundColor.white );
                                            
    System.out.println("!");
                                        }
                                    }

                                    return 
    cell;
                                    }
                             }
                        ); 
                }
        } 
    Dove sbaglio?

    Richiamando la funzione nel modo seguente:

    int t[]={0,1};
    int y[]={2,2};
    tabellaConti.coloraCella(t,y);

    la cella relativa alla prima riga rimane bianca ( e la cella relativa alla seconda riga viene colorata )

    Invece in questo modo:

    int t[]={0,1};
    int y[]={2,3};
    tabellaConti.coloraCella(t,y);

    La funzione lavora bene ( le due celle vengono colorate correttamente ).

    Avete consigli?

  2. #2

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

    Re: Gestire celle JTable

    Originariamente inviato da magnus
    Dove sbaglio?
    Un po' tutto. Innanzitutto non ha granché senso fare un setCellRenderer() ogni volta che richiami quel metodo.
    Innanzitutto bisogna stabilire se lo "stato" della colorazione delle celle deve essere associato ai dati oppure no. E in ogni caso centra il table model. Infatti è il table model che, quando viene aggiornato in qualche modo (struttura, dato di una o più celle ecc...), fa un "fire" di un TableModelEvent che viene ricevuto dalla "view" cioè la parte che si occupa di visualizzare la tabella.

    Potrei fare un esempio ma sarebbe un po' lungo. Comunque la tua soluzione non è "pulita".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4

    Re: Re: Gestire celle JTable

    Originariamente inviato da andbin
    Potrei fare un esempio ma sarebbe un po' lungo. Comunque la tua soluzione non è "pulita".
    Consigli? Link?

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.