Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305

    Problema con Renderer Jtable

    Questo è il mio renderer:
    codice:
    package jCallRemember.libreria;
    
    
    import java.awt.Color;
    import java.awt.Component;
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;
    
    
    /**
     *
     * @author Linux
     */
    public class RendererFormListaClienti extends JLabel implements TableCellRenderer{
    
    
        
        public RendererFormListaClienti(){
        }
     
    
    
    
    
        
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {
            synchronized(table.getModel()){
            setOpaque(true);
            String values=table.getValueAt(row, 8).toString();
            
            
                setForeground(Color.BLACK);
                switch (values) {
                    case "PR":
                       setBackground(Color.YELLOW);
                      this.setText(table.getModel().getValueAt(row, column).toString());
                       break;
                    case "OK":
                        setBackground(Color.GREEN);
                        this.setText(table.getModel().getValueAt(row, column).toString());
                        break;
                    case "KO":
                       setBackground(Color.RED);
                       this.setText(table.getModel().getValueAt(row, column).toString()); 
                       break;
    
    
                }
              
              
                return this;
            }
           
            
    
    
        }
    
    
    }

    Funziona benissimo, l'unico problema è che se clicco col mouse su una riga della jtable , questa non viene colorata ma resta del colore stabilito dal renderer . Come posso ovviare a questa situazione?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    l'unico problema è che se clicco col mouse su una riga della jtable , questa non viene colorata ma resta del colore stabilito dal renderer . Come posso ovviare a questa situazione?
    Un click su una cella di per sé (cioè senza implementare qualcosa di specifico) non cambia nulla riguardo i dati della tabella. Al massimo può cambiare lo stato di selected/focus di una o più righe/colonne/celle.

    Nel tuo renderer, il background è solo in funzione di quel String values. Non vedo l'uso di isSelected/hasFocus. Quindi se al click non fai cambiare quel dato preso dal renderer .... non vedo come possa cambiare lo sfondo. Giusto?


    P.S. guardando la tua implementazione del renderer, mi sorgono alcuni dubbi riguardo ad alcune cose .... se vuoi preciso meglio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Quote Originariamente inviata da andbin Visualizza il messaggio

    P.S. guardando la tua implementazione del renderer, mi sorgono alcuni dubbi riguardo ad alcune cose .... se vuoi preciso meglio.
    certo dimmi

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    certo dimmi
    Beh, giusto due cose, per iniziare.

    Innanzitutto perché acquisisci il lock con synchronized sul model? Hai un motivo particolare?

    Poi: il getValueAt(row, 8) lo fai su JTable. Il getValueAt di JTable opera con indici di riga/colonna nella "view", che potrebbero anche differire dagli indici nel "model" (il caso più possibile/frequente è quando l'utente trascina e riordina le colonne se questa funzionalità non viene espressamente disabilitata). Quindi è davvero quello che volevi?
    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.