Bonjour, j'ai un petit problème avec une JTable.
Je travaille avec une architecture MVC (donc mon controlleur est dans un autre fichier.java)
J'aimerai mettre un bouton enabled seulement si une sélection est faite dans ma table (je n'ai pas besoin de savoir ce que contient la sélection).
Quand je fais cette opération avec une JListe, cela fonctionne.
Voici le code pour ma JList:
et je récupère l'événement sur ma JList dans mon cotrolleur comme ceci;
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 /** * This method initializes Liste_TVA_PCT * * @return javax.swing.JList */ private JList getListe_TVA_PCT() { try{ if (Liste_TVA_PCT == null) { Liste_TVA_PCT = new JList(); Liste_TVA_PCT.setName("Liste_TVA_PCT"); this.initialiseListe_TVA_PC(Liste_TVA_PCT, TVA_SQL.getListeTVATaux(connect)); Liste_TVA_PCT.setDragEnabled(true); Liste_TVA_PCT.addListSelectionListener(controleur); } }catch(SQLException ex){ System.out.println("Erreur JDBC : "+ex.getMessage()); } return Liste_TVA_PCT; }
Pour savoir si je suis dans une JListe je fais le test suivant:
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 public void valueChanged(ListSelectionEvent e) { if (e.getSource()instanceof JList){ System.out.println("JListe"); } if (e.getSource()instanceof JTable){ System.out.println("JTable"); } if (vue!=null && vue.isActive()){ if(!e.getValueIsAdjusting()) { JList list = (JList)e.getSource(); if (list.getName()=="Liste_TVA_PCT"){ System.out.println("OK"); if(list.getSelectedIndex()!=-1){ vue.Enable_btnSupprimerTVA(true); } else{ vue.Enable_btnSupprimerTVA(false); } } } }
par contre si je fais le même test pour une JTable, je ne rentre jamais dans mon instruction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void valueChanged(ListSelectionEvent e) { if (e.getSource()instanceof JList){ System.out.println("JListe"); }
Voici le code de ma JTable:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void valueChanged(ListSelectionEvent e) { if (e.getSource()instanceof JList){ System.out.println("JListe"); } if (e.getSource()instanceof JTable){ System.out.println("JTable"); }
Je sais que je provoque bien un événement mais j'ai directement un problème quand je caster l'événement de ma JTable:
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 /** * This method initializes TableTypesTVA * * @return javax.swing.JTable */ private JTable getTableTypesTVA() { try{ if (TableTypesTVA == null) { TableTypesTVA = new JTable(); TableTypesTVA.setName("TableTypesTVA"); this.setTableTypesTVA(Type_SQL.getMatriceAllTypeDescitpion_TypeTVATaux(connect)); TableTypesTVA.getSelectionModel().addListSelectionListener(controleur); } }catch(SQLException ex){ System.out.println("Erreur JDBC : "+ex.getMessage()); } return TableTypesTVA; }
Ca fonctionne pour ma JList mais pas pour ma JTable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //pour une JList JList list = (JList)e.getSource(); //pour une JTable JTable table = (JTable)e.getSource();
Je n'utilise peut-être pas le bon objet quand l'événement vient de ma JTable.
Ce n'est pas e.getSource()?
Merci de votre aide.
Partager