OVH Cloud OVH Cloud

deleguer la gestion des évenements dans une classe externe

1 réponse
Avatar
julien
Bonjour
J'ai créer un DefaultTableModel pour gérer le comprtement de ma JTable.
Dans le DefaultTableModel, je voudrais gérer les événements dans une
classe externe.

Jusqu'à maintenant, je gérer tout dans la même classe, donc j'avais
quelque chose du genre:
tableModel.addTableModelListener(new TableModelListener() {
public void .....
//le reste de mon code formant la class
});


Mainteant, je voudraid faire quelque chose du genre:
tableModel.addTableModelListener(new MyTableEventsHandler());

avec:
public class MyTableEventsHandler {
public void ...

}

Mais quend j'essaie ça, j'ai l'erreur:
addTableModelListener(javax.swing.event.TableModelListener) in
javax.swing.table.AbstractTableModel cannot be applied to
(MyTableEventsHandler)

J'ai essayé de changer MyTableEventshander en public class
MyTableEventshander extends TableModelListener mais j'obtiens: "cannot
resolve symbol class TableModelListener".

Je n'ai pas réussi à trouver d'exemple de code sur le web.*

Julien

1 réponse

Avatar
Thibaut Desmarest
julien wrote:

Bonjour
J'ai créer un DefaultTableModel pour gérer le comprtement de ma JTable.
Dans le DefaultTableModel, je voudrais gérer les événements dans une
classe externe.

Jusqu'à maintenant, je gérer tout dans la même classe, donc j'avais
quelque chose du genre:
tableModel.addTableModelListener(new TableModelListener() {
public void .....
//le reste de mon code formant la class
});


Mainteant, je voudraid faire quelque chose du genre:
tableModel.addTableModelListener(new MyTableEventsHandler());

avec:
public class MyTableEventsHandler {
public void ...

}

Mais quend j'essaie ça, j'ai l'erreur:
addTableModelListener(javax.swing.event.TableModelListener) in
javax.swing.table.AbstractTableModel cannot be applied to
(MyTableEventsHandler)

J'ai essayé de changer MyTableEventshander en public class
MyTableEventshander extends TableModelListener mais j'obtiens: "cannot
resolve symbol class TableModelListener".

Je n'ai pas réussi à trouver d'exemple de code sur le web.*

Julien


Cette erreur veut dire que tu ne passes pas les bons types d'arguments à
la fonction. La traduction ca serait :

La méthode addTableModelListener(TableModelListener) de la classe
AbstractTableModel attend un argument de type TableModelListener.

Donc tu en déduis que ta classe MyTableEventsHandler n'est pas de type
TableModelListener.

Là deux solutions, soit en effet tu crées une interface dérivée de
TableListener grâce au mot clé extends (mais je vois vraiment pas
l'interêt).

Soit tu implementes cette interface (c'est le plus logique)

public class MyTableEventsHandler implements TableModelListener {

Tu n'as plus qu'à écrire les bonnes méthodes.

P.S : Quant à ton cannot resolve symbol class TableModelListener,
tu as simplement du oublier de dire à java un petit mot d'amour du style:

import javax.swing.event.*;

;)

Bonne route,

Thibaut