Erreur InvocationTargetException
Bonjour,
Voila j'ai une Jframe ou j'ai un jTable que j'alimente avec un defaulttablemodel.Seulement quand il s'agit d'ajout ca marche, mais quand je selectionne une ligne et je la supprime j'ai l'erreur suivante.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| Exception in thread "AWT-EventQueue-0" java.lang.Error: java.lang.reflect.InvocationTargetException
at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
... 37 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementAt(Vector.java:430)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)
at javax.swing.JTable.getValueAt(JTable.java:2686)
at ui.FenAnnuaire$1.valueChanged(FenAnnuaire.java:74)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:660)
at javax.swing.JTable.tableRowsDeleted(JTable.java:4497)
at javax.swing.JTable.tableChanged(JTable.java:4400)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
at javax.swing.table.DefaultTableModel.setNumRows(DefaultTableModel.java:304)
at javax.swing.table.DefaultTableModel.setRowCount(DefaultTableModel.java:322)
at ui.FenAnnuaire.doit(FenAnnuaire.java:337)
at ui.FenAnnuaire.suppression(FenAnnuaire.java:538)
... 42 more |
le code de ma fenetre
voila le code associé au boutton supprimer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public void suppression() {
System.out.println("Coucou");
Connection dbConnect = JDBCDriverInformation.getMSSJDBCConnection("BDD", "CLIENT", "sa", "sql");
String SQL = "delete from annuaires where ANNUAIRE_ID=" + idASupprimer;
try {
java.sql.Statement dbStatement = dbConnect.createStatement();
int delete = dbStatement.executeUpdate(SQL);
dbStatement.close();
dbConnect.close();
if (delete == 1) {
JOptionPane.showMessageDialog(this, "Suppression aves succès", "Succès", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(this, "Erreur de suppression", "Erreur de Suppression", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(this, "Erreur de suppression", "Erreur de Suppression", JOptionPane.ERROR_MESSAGE);
}
try {
doit();
} catch (SQLException ex) {
Logger.getLogger(FenAnnuaire.class.getName()).log(Level.SEVERE, null, ex);
}
} |
voila le code que j'appele si la suppresion s'est bien effectué
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public void doit() throws SQLException {
model.setRowCount(0);
Connection dbConnect = null;
dbConnect = JDBCDriverInformation.getMSSJDBCConnection("BDD", "CLIENT", "sa", "sql");
System.out.println("jes suis dans Selection Cient : " + FenConnexionBase.isConnected);
String SQL = "SELECT * FROM ANNUAIRES";
java.sql.Statement dbStatement = dbConnect.createStatement();
ResultSet res = dbStatement.executeQuery(SQL);
while (res.next()) {
model.addRow(new Object[]{
res.getInt(1),//
res.getString("LIBELLE_ANNUAIRE"),//
res.getDate("DATE_DEBUT_VALIDITE").toString(),
res.getDate("DATE_FIN_VALIDITE").toString(),});
}
res.close();
dbConnect.close();
jTable3.setModel(model);
} |
le code du listener
Code:
1 2 3 4 5 6 7 8
| jTable3.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
// firePropertyChange("recordSelected", !isRecordSelected(), isRecordSelected());
idASupprimer = jTable3.getValueAt(jTable3.getSelectedRow(), 0).toString();
}
}); |