Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da javatore Visualizza il messaggio
    codice:
        table.setDefaultRenderer(Object.class, new TableCellRenderer() {
        
          @Override
          public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
            
            JLabel label = new JLabel(value.toString());
            
            label.setOpaque(true);
    
            if (redColoring[row][column]) {
            
              label.setBackground(Color.RED);
            
            }
                   
            return label;
                   
            }
        
        });
    Le principali questioni su questo codice sono:
    - innanzitutto restituisci un nuovo JLabel ad ogni aggiornamento della cella. I renderer "buoni" normalmente giocano molto al "risparmio" e restituiscono sempre la stessa identica istanza del componente. E anzi la classe del renderer generalmente è il componente stesso!
    - non tratti per niente i flag isSelected/hasFocus.

    Se andassi a sbirciare nel sorgente di DefaultTableCellRenderer scopriresti che già solo questo renderer di "default" fa molte, molte più cose e inoltre sovrascrive "vuoti" una serie di metodi per ragioni di performance.
    Ultima modifica di andbin; 22-05-2014 a 12:39
    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.