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:
Secondo voi posso utilizzare un altro metodo più corretto per fare il refresh automatico?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)); } }
L'errore a cosa può essere dovuto?
Grazie... per la pazienza
Alessio.


Rispondi quotando
Io non ti ho detto di eliminarli!!!
... anche se però anch'io immagino che una cosa che si sa risulta sempre molto semplice
.
