Ciao a tutti!

Mi sto cimentando nel cercare di refreshare in modo automatico la mia jtable ogni tot di tempo.

Ci sono riuscito schedulando un timerTask creato passando l'istanza della mia DesktopApplicationView... per funzionare... funziona... tranne per il fatto che in qualche ciclo compare il seguente errore:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Questa è la mia TimerTask

codice:
    class MyTask extends TimerTask {

    private DesktopApplication1View refrashframe;

    MyTask(DesktopApplication1View aThis) {
        //throw new UnsupportedOperationException("Not yet implemented");
        refrashframe = aThis;

    }

    @Override
    public void run() {
        System.out.println("Running the task");
        refrashframe.CaricaDati();
    }
}

Questo è quello che faccio nella classe DesktopApplication1View:

codice:
      public DesktopApplication1View(SingleFrameApplication app) {
        super(app);

        initComponents();
        // Permetto di selezionare solo una riga alla volta della tabella
        jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        // Riempio la tabella
        CaricaDati();

        java.util.Timer timer = new java.util.Timer();
        java.util.TimerTask task = new MyTask(this);

        // aspetta 10 secondi prima dell'esecuzione
        //timer.schedule(task, 1000);

        // aspetta 5 secondi prima dell'esecuzione,poi viene eseguita ogni 10 secondi
        timer.schedule(task, 5000, 5000);
        ...
     }

     public void CaricaDati() {
        mainPanel.setCursor(new Cursor(Cursor.WAIT_CURSOR));
        try {
            try {
                // salvo la posizione della riga selezionata
                int app = jTable1.getSelectedRow();

                Connection con = desktopapplication1.DesktopApplication1.MyConection();
                Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                String query = "SELECT ID_IMPIANTO, NOME_IMPIANTO, RAG_SOC, DES_MARCA, DES_MODELLO, LAST_UPDATE, MAX_ERROR_LEVEL, COUNT_ERROR, FLG_EVASO FROM MIT.WHD_ALLARMI_IMPIANTI";
                ResultSet rs = st.executeQuery(query);
                GenericTableModel model = new GenericTableModel();
                model.parseResultSet(rs);
                jTable1.setModel(model);
                jTable1.updateUI();
                // reimposto la posizione della riga selezionata
                if (app >= 0) {
                    jTable1.setRowSelectionInterval(app, app);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } finally {
            mainPanel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
        }
    }
Secondo voi posso utilizzare un altro metodo più corretto per fare il refresh automatico?
L'errore a cosa può essere dovuto?

Grazie... per la pazienza

Alessio.