Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36

    colorazione righe delle JTable

    Salve a tutti,
    io ho una JTable in cui vorrei colorare le righe rosse o verdi in base ad un valore contenuto all'interno di una cella della riga stessa...però non ho idea di come poter colorare le righe!!!Ho controllato la javadoc ma non mi è stat di grande aiuto!!!

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Evidentemente non hai guardato bene la JavaDoc... specialmente all'inizio dove c'è un utilissimo link che si chiama "How to Use Tables", nella prima riga della documentazione di JTable.

    Il link rimanda ai tutorial della sun sull'utilizzo delle JTable, che ti avrebbe fatto scoprire che per fare quello che chiedi è necessario ridefinire un TableCellRenderer da applicare, successivamente, alla JTable.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    come precedentemente detto devi crearti il tuo TableCellRenderer; nel seguente esempio specifico alle colonne 0 e 2 di cambiare il colore dello sfondo e del testo quando non sono selezionate. Inoltre specifico un diverso sfondo e colore del testo per le celle selezionate:

    codice:
        static class MyTableRenderer extends DefaultTableCellRenderer{
    
       public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, 
                       boolean focused, int row, int column){
                super.getTableCellRendererComponent(table, value, selected, focused, row, column);
                Color c = table.getBackground();
                if (!selected){
                    if(column==0||column==2){
                        setBackground(Color.red);
                        setForeground(Color.black);
                    
                    }else{
                        setBackground(c);
                        setForeground(Color.black);
                    }
                }else{
                    setForeground(Color.white);
                    setBackground(Color.blue);
                }
                return this; 
       }
    }
    il renderer deve poi essere assegnato alla table, io conosco solo due metodi:
    o lo assegni ad ogni colonna:
    codice:
                tableRenderer tr = new tableRenderer();
                for(int i=0; i<table.getColumnCount();i++){
                    table.setDefaultRenderer(table.getColumnClass(i), tr);
                }
    oppure lo assegni al tipo di oggetti presenti nella table:
    codice:
    table.setDefaultRenderer(Integer.class, mtr);
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    36
    Il mio problema è che ho già applicato alla mia JTable un DefaultTableModel in quanto mi serve interagire con la tabella aggiungendo e rimuovendo delle righe, e in più ho disabilitato l'editazione di certe colonne!Se ridefinisco una TableCellRenderer posso applicare le operazioni precedentemente elencate????

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.