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.
le code de ma fenetre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
voila le code associé au boutton supprimer
voila le code que j'appele si la suppresion s'est bien effectué
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
le code du listener
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } });
Partager