Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    [Java] Colorare righe JTable

    Salve a tutti, ho un problema che non riesco a risolvere:
    in pratica dovrei inserire del testo in una JTextField e colorare la riga sulla JTable che contiene il testo immesso.. il problema è che mi colora l'intera tabella e non capisco perchè xd
    vi posto il codice che ho scritto, spero possiate darmi una mano!

    Questa è il Renderer personalizzato
    codice:
    import java.awt.Color;
    import java.awt.Component;
    import java.util.ArrayList;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    
    
    /**
     *
     * @author Gianluca
     */
    public class ColorRenderer extends DefaultTableCellRenderer{
        private Color currentColor = Color.white;
        private String stringaSelezionata;
        private ArrayList <FileMultimediale> elements;
    
    
        public ColorRenderer(String stringaSelezionata, ArrayList<FileMultimediale> elements) {
            super();
            this.stringaSelezionata = stringaSelezionata;
            this.elements = elements;
        }
    
    
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int row, int col) {
            
            for ( int i = 0; i < elements.size(); i++ ){
                if (elements.get(i).getTitolo().contains(stringaSelezionata) || elements.get(i).getAutore().contains(stringaSelezionata)){
                    currentColor = Color.CYAN;
                }
                else{
                    currentColor = Color.WHITE;
                }
            }
            if (selected) {
                super.setForeground(table.getSelectionForeground());
                super.setBackground(table.getSelectionBackground());
            }
            else {
                super.setForeground(Color.black);
                super.setBackground(currentColor);
            }
            setFont(table.getFont());
            setValue(value);
            
            return this;
        }
    }
    Mentre questo è il pezzettino di codice che ho inserito nel metodo ActionPerformed che attiva tutto alla pressione dell'apposito tasto
    codice:
            if ( actionCommand.equals("SUCC")){
                String stringaSelezionata = cerca.getText();
                table.setDefaultRenderer(Object.class, new ColorRenderer(stringaSelezionata, elements));
                model.fireTableDataChanged();
            }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Online ci sono un sacco di domande come la tua :P

    Comunque puoi chiamare con super il metodo della superclasse ed ottenere il JLabel su cui setterai il colore:

    codice:
    JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    Quote Originariamente inviata da Patrick Jane Visualizza il messaggio
    Online ci sono un sacco di domande come la tua :P

    Comunque puoi chiamare con super il metodo della superclasse ed ottenere il JLabel su cui setterai il colore:

    codice:
    JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
    è vero, ma ho preferito aprire una discussione perchè non ho ancora capito bene come funziona..
    Non ho capito bene dove fare la modifica della label, se potresti aiutarmi..

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Certo!
    La modifica avviene semplicemente qui:

    codice:
    public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int row, int col) {
      JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
      l.setBackground(Color.RED);
      return l;
    }
    provalo sulla tabella, così capisci come funziona.

    Qui trovi un esempio di quanto dico: http://stackoverflow.com/questions/5673430/java-jtable-change-cell-color


    Per altri esempi: https://www.google.it/search?q=jtabl...JcXW8gfy74HYDg

    Se vuoi spiegazioni mirate su qualcosa, chiedi.
    Ultima modifica di Patrick Jane; 19-12-2013 a 19:43

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.