Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [Java] Listener JTable

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    22

    [Java] Listener JTable

    Salve ragazzi, sto creando un editor con netbeans.Ho una tabella di x righe e y colonne. Il mio problema è sapere quando la tabella cambia, cioè quando un utente inserisce qualcosa in una delle celle, quindi associare un listener. Nel mio codice ho fatto così:

    tabella.getModel().addTableModelListener(tabella);

    dove tabella è il nome della JTable globale

    poi ho scritto il seguente metodo

    public void tableChanged(TableModelEvent e) {

    int row = e.getFirstRow();
    int column = e.getColumn();
    System.out.println("e stata modificata la riga " + row + " colonna " + column);

    }

    Però se lancio il programma e cambio il contenuto delle celle, non succede nulla. Dove sbaglio?

    Grazie mille a tutti!

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

    Re: [Java] Listener JTable

    Originariamente inviato da gjord
    tabella.getModel().addTableModelListener(tabella);
    Passare 'tabella' a addTableModelListener() semplicemente non ha senso e non ti serve!!!!
    Tecnicamente funziona, perché di fatto JTable, per ovvie questioni sue, implementa TableModelListener.

    La questione è che sei tu che devi implementare la interfaccia TableModelListener in una tua classe (quindi implementi il tableChanged()) e dovrai passare un oggetto di questa tua classe a addTableModelListener().
    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
    Dec 2008
    Messaggi
    22
    non è che potresti farmi un esempio?? perchè mi sto scervellando è non capisco un tubo, ti posto il mio codice


    public class corpo extends javax.swing.JPanel{

    JTable tabella;


    public corpo() {

    initComponents();
    tabella=tab; //tab è il nome della jtable



    //QUI DEVO METTERE IL LISTENER??? COME?? IO HO FATTO COSI MA NON FUNGE

    tab.getModel().addTableModelListener(new TableModelListener() {
    public void tableChanged(TableModelEvent e) {
    SYSTEM.OUT.PRINTLN("cella cambiata"); } });




    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da gjord
    tab.getModel().addTableModelListener(new TableModelListener() {
    public void tableChanged(TableModelEvent e) {
    SYSTEM.OUT.PRINTLN("cella cambiata"); } });
    Se vuoi usare una "anonymous" inner class, ok va bene. Ma l'ultima riga l'hai scritta proprio tutta maiuscola?? Non va bene ovviamente.

    codice:
    tab.getModel().addTableModelListener(new TableModelListener() {
        public void tableChanged(TableModelEvent e) {
            System.out.println("Qualcosa è cambiato");   // Vedi i metodi di TableModelEvent per sapere "cosa"
        }
    });
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    22
    è uscita maiuscola perchè avevo il caps attivato, ma ovviamente l'ho scritta corretta nel codice...cmq alla fine ho risolto, dovevo spostare l'add del listener in un'altra classe. grazie mille

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.