Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Celle Lampeggianti in JTable

    Ciao,

    sto utilizzando una Jtable per la visualizzazione di un flusso di dati che vengono letti in tempo reale.

    Ogni cella della Jtable viene "riempita" con una Jlabel che viene generata dal mio "TableCellRenderer" ...

    fin qui tutto ok.

    Il mio intento è quello di far "lampeggiare" le celle i cui valori sono cambiati. Voglio cioè settare un colore di sfondo, che viene cambiato dopo tot tempo (supponiamo 700 millisecondi) dal settaggio del nuovo valore.

    Ho quindi creato una classe thread a cui viene passato il riferimento alla Jlabel e il nuovo colore, che aspetta 700 millisecondi e setta il nuovo background alla jlabel...QUESTA SOLUZIONE NON FUNZIONA.

    Avete idea di come potrei fare per risolvere questo problema?

    Grazie!

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

    Re: Celle Lampeggianti in JTable

    Originariamente inviato da bippo
    Ogni cella della Jtable viene "riempita" con una Jlabel che viene generata dal mio "TableCellRenderer" ...
    In che senso "generata"???? Cioè fammi capire ... il tuo metodo getTableCellRendererComponent() ritorna sempre nuove JLabel?? Se è così, non è che serve a molto.

    Come funziona un "renderer" l'avevo spiegato bene qui.

    Originariamente inviato da bippo
    Il mio intento è quello di far "lampeggiare" le celle i cui valori sono cambiati. Voglio cioè settare un colore di sfondo, che viene cambiato dopo tot tempo (supponiamo 700 millisecondi) dal settaggio del nuovo valore.

    Ho quindi creato una classe thread a cui viene passato il riferimento alla Jlabel e il nuovo colore, che aspetta 700 millisecondi e setta il nuovo background alla jlabel...QUESTA SOLUZIONE NON FUNZIONA.
    Non funziona per via del modo in cui è gestito il rendering delle celle! Come ho spiegato in quel post, ciò che vedi a video nelle celle NON sono veri e propri componenti ... solo una "stampa" del renderer e basta.

    Associato ad una JTable c'è sempre un "table model", che mantiene e gestisce i dati. Quando essi cambiano, è il table model che notifica la "view" della tabella per aggiornare i dati (ed lì in quel momento che entra in gioco il renderer).
    Vedi il metodo fireTableCellUpdated() di AbstractTableModel. Non so ovviamente quale table model stai usando, se uno tuo o quello di default (dipende da come hai creato l'oggetto JTable).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho capito... quindi il modo per cambiare nuovamente lo sfondo sarebbe simulare un'update del dato?

    Invece sai se sia possibile velocizzare la stampa a video dei nuovi dati? Mi sembra che al momento il refresh dei dati avvenga dopo un po che ho settato il nuovo valore....

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bippo
    Ho capito... quindi il modo per cambiare nuovamente lo sfondo sarebbe simulare un'update del dato?
    Quello che scatena un aggiornamento è una invocazione di uno dei metodi fireTableXXX() del table model, che invia un evento TableModelEvent a tutti i TableModelListener registrati. Anche quando invochi un setValueAt() direttamente sul JTable, questo va innanzitutto a modificare la struttura dei dati interna al model e poi il model notifica la "view" inviando l'evento.

    Originariamente inviato da bippo
    Invece sai se sia possibile velocizzare la stampa a video dei nuovi dati? Mi sembra che al momento il refresh dei dati avvenga dopo un po che ho settato il nuovo valore....
    Dipende da come fai la impostazione. Ripeto che non so che cosa stai usando a livello di table model e come stai gestendo le cose .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Per sviluppare uso il NetBeans IDE 6.0 e il tableModel è quello che mi da da di default inserendo l'oggetto Jtable da interfaccia grafica... poi lo personalizzo un attimino (numero di righe e colonne e valori di default tramite il table model customizer )..

    Conosci qualche altro oggetto visuale per la presentazione di dati sotto forma di tabella? (l'utente non puo e non deve modificare i dati, devo pero' poter sapere in che cella ha cliccato.. )

    Grazie per il tuo tempo.

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.