Visualizzazione dei risultati da 1 a 4 su 4

Discussione: colorare riga jTable

  1. #1

    colorare riga jTable

    Salve
    ho una jTable realizzata con il l'editor grafico di netbeans (quindi il codice generato automaticamente da netbeans non si può modificare) vorrei colorare le righe a mio piacimento qualcuno mi sa dare una mano grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Devi associare un renderer alla tua tabella.

    Puoi personalizzarlo in modo che colori solo sotto opportune condizioni:

    codice:
    public static class ColorRenderer extends DefaultTableCellRenderer{
     
         @Override
        public Component getTableCellRendererComponent( 
                                        JTable table, Object value,
                                        boolean isSelected, boolean hasFocus, 
                                        int row, int col) {   
            JLabel label = new JLabel("");
            label.setHorizontalAlignment(JLabel.CENTER);
            label.setFont(new Font("Tahoma", Font.BOLD, 14));
            label.setText(value.toString());
            label.setOpaque(true);
            label.setForeground(Color.black);
            label.setBackground(Color.red);
            return label;
        }   
    }
    per usarlo:

    codice:
        TableCellRenderer ColorRendererRed = new ColorRenderer();
        for (int k=0; k<jTable1.getColumnCount(); k++){
            TableColumnModel modelloColonna = jTable1.getColumnModel();
            modelloColonna .getColumn(k).setCellRenderer(ColorRendererRed);
         }

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

    Re: colorare riga jTable

    Originariamente inviato da Peppe1984
    vorrei colorare le righe a mio piacimento qualcuno mi sa dare una mano grazie
    Dipende quali righe e in base a quali condizioni (dipende dal valore contenuto in una cella? Dipende solo dall'indice della riga?).

    Una soluzione è definire un apposito cell "renderer". Un'altra soluzione è estendere JTable e fare l'override di prepareRenderer(). Vedi tra i miei Java Examples (vedi firma).



    Originariamente inviato da som
    codice:
    public static class ColorRenderer extends DefaultTableCellRenderer{
     
            JLabel label = new JLabel("");
    DefaultTableCellRenderer è già un JLabel!! Perché istanziare un nuovo JLabel ogni volta?? Inoltre il componente dovrebbe non fare (per questioni di performance) certe operazioni e questo è ben scritto nella documentazione di DefaultTableCellRenderer.

    Originariamente inviato da som
    codice:
    modelloColonna .getColumn(k).setCellRenderer(ColorRendererRed);
    Si può anche associare il renderer ad un "tipo" (Class) piuttosto che ad una colonna specifica. Ma quale tipo dipende da cosa indica il table model.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    precisissimo come sempre

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.