View Full Version : [JAVA]CellEditorListener
Gilmour93
10-09-2015, 17:15
Salve a tutti!
Sto usando una JTable per visualizzare i risultati delle query relativi ad un mio database. Ciò che voglio fare adesso è modificare il database direttamente dalla JTable, ma non riesco a capire come settare il CellEditor Listener: all'avvio del programma ottengo "java.lang.NullPointerException". Che cosa sbaglio?
private JTable tableOperai;
tableOperai = new JTable();
tableOperai.getCellEditor().addCellEditorListener(new CellEditorListener(){
@Override
public void editingCanceled(ChangeEvent arg0) {}
@Override
public void editingStopped(ChangeEvent arg0) {
String newValue = tableOperai.getValueAt(tableOperai.getSelectedRow(), tableOperai.getSelectedColumn()).toString();
//operazioni di scrittura database
}
});
franksisca
11-09-2015, 09:26
se ti dà un NPE è perchè probabilmente non è inizializzato l'oggetto sul quale stai facendo le operazioni. se sono le celle della tabella forse non sono state ancora "costruite"!!!
Gilmour93
11-09-2015, 10:55
Grazie della risposta!
Ma essendo un CellEditorListener non dovrebbe essere chiamato in causa solo dopo aver editato una cella? :muro:
Ho provato a spostare il CellEditorListener dopo l'istruzione che mi crea la tabella, in questo modo:
//...
tableOperai.setModel(DbUtils.resultSetToTableModel(rs));
//...
tableOperai.getCellEditor().addCellEditorListener(new CellEditorListener(){
@Override
public void editingCanceled(ChangeEvent arg0) {}
@Override
public void editingStopped(ChangeEvent arg0) {
String newValue = tableOperai.getValueAt(tableOperai.getSelectedRow(), tableOperai.getSelectedColumn()).toString();
//Operazioni di scrittura nel DB
}
});
Ma ottengo sempre lo stesso errore. Non all'avvio del programma, ma subito dopo la creazione della tabella.
franksisca
11-09-2015, 11:25
Grazie della risposta!
Ma essendo un CellEditorListener non dovrebbe essere chiamato in causa solo dopo aver editato una cella? :muro:
Ho provato a spostare il CellEditorListener dopo l'istruzione che mi crea la tabella, in questo modo:
//...
tableOperai.setModel(DbUtils.resultSetToTableModel(rs));
//...
tableOperai.getCellEditor().addCellEditorListener(new CellEditorListener(){
@Override
public void editingCanceled(ChangeEvent arg0) {}
@Override
public void editingStopped(ChangeEvent arg0) {
String newValue = tableOperai.getValueAt(tableOperai.getSelectedRow(), tableOperai.getSelectedColumn()).toString();
//Operazioni di scrittura nel DB
}
});
Ma ottengo sempre lo stesso errore. Non all'avvio del programma, ma subito dopo la creazione della tabella.
posta anche lo stack dell'errore.
Gilmour93
12-09-2015, 11:08
java.lang.NullPointerException
at OperaiInfo.initialize(OperaiInfo.java:646)
at OperaiInfo.<init>(OperaiInfo.java:334)
at OperaiInfo$1.run(OperaiInfo.java:321)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
dove la riga 646 è: tableOperai.getCellEditor().addCellEditorListener(new CellEditorListener(){
franksisca
14-09-2015, 12:52
Se puoi vai in debug e vedi quale oggetto ti dà NPE
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.