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

    JTable e l'evento per questa

    Salve programmatori... sto creando un piccolo programmino e in una JPanel c'è un JTable.
    I dati all'interno di essa sono riempiti correttamente attraverso il suo Model creando una classe come questa:
    codice:
    class ModelTabella extends AbstractTableModel implements TableModelListener
    .. bene.. fino a qua tutto bene... poi, come potete vedere a questa classe ho implementato l'interfaccia TableModelListener e conseguentemente ho scritto il metodo di questa interfaccia come segue:
    codice:
    public void tableChanged(TableModelEvent e)
                {
                    int riga = e.getFirstRow();
                    int colonna = e.getColumn();
                    TableModel model = (TableModel)e.getSource();
                    String nomeColonna = model.getColumnName(colonna);
                    Object dato = model.getValueAt(riga, colonna);
                    
    //PERCHE' A UNA MODIFICA DELLA CELLA NON CORRISPONDE UNA STAMPATA DI QUESTI DATI???
                    System.out.println("Riga cambiata: " + riga);
                    System.out.println("Colonna cambiata: " + colonna);
                    System.out.println("Nome colonna cambiata: " + nomeColonna);
                    System.out.println("Dato modificato: " + dato.toString());
                }
    IL problema viene adesso... ossia, come potete vedere ho messo dei System.out.println() per fare un primo test... ho avviato il programmino... nessun errore ma quando modifico una cella no ricevo la stampata della riga cambiata, colonna cambiata ecc come mi aspetterei????

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    codice:
    class ModelTabella extends AbstractTableModel implements TableModelListener
    come potete vedere a questa classe ho implementato l'interfaccia TableModelListener
    Innanzitutto è generalmente "strano" (perlomeno inusuale) che un table model sia anche un TableModelListener. TableModelListener serve, in generale, per ricevere notifica che "qualcosa" nel table model è cambiato (cosa lo descrive più accuratamente il TableModelEvent).
    JTable implementa TableModelListener, perché è principalmente a JTable che servono le notifiche per aggiornare la parte di "view".

    Non ho capito esattamente a cosa ti serve implementare TableModelListener nel table model, ma tecnicamente se vuoi che funzioni devi registrare il table model sul table model stesso. (es. dentro il suo costruttore: addTableModelListener(this); )
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non ho capito esattamente a cosa ti serve implementare TableModelListener nel table model, ma tecnicamente se vuoi che funzioni devi registrare il table model sul table model stesso. (es. dentro il suo costruttore: addTableModelListener(this); )
    ehh.. beh... se non metto addTableModelListener col cacchio che acchiappa l'evento... ( e mi ero dimenticato di metterlo)... poi per il resto dell'approccio sto seguendo "How To Use Table" da Oracle e a questo punto http://docs.oracle.com/javase/tutori...ml#modelchange fa così...

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da miticogilles Visualizza il messaggio
    per il resto dell'approccio sto seguendo "How To Use Table" da Oracle e a questo punto http://docs.oracle.com/javase/tutori...ml#modelchange fa così...
    Sì ma lì in quel punto spiega solo che esiste la possibilità di usare un TableModelListener, facendo l'esempio (abbozzato tra l'altro) di una classe qualunque che è interessata a ricevere quelle notifiche.

    Non dice (da nessuna parte) che TableModelListener deve o dovrebbe essere implementato nel table model.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ... in effetti.. ho fatto confusione... ma adesso credo d'aver capito

    il lupo perde il pelo ma non il vizio!
    http://www.pateam.eu
    http://pateam.altervista.org

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.