cs_biboobib
Messages postés95Date d'inscriptiondimanche 29 juillet 2007StatutMembreDernière intervention27 août 2011
-
3 mai 2008 à 18:31
cs_biboobib
Messages postés95Date d'inscriptiondimanche 29 juillet 2007StatutMembreDernière intervention27 août 2011
-
7 mai 2008 à 20:34
Salut a vous tous!!
j'ai réussi a faire intégrer le JCheckBox dans le JTable.. mais il me reste une petite probléme.. c'est que j'arrive pas a réaliser un listener pour la selection de JCheckBox dans la table..
et je sais pas s'il existe une méthode prédéfini pour ca!!
voici ma classe EachRowEditor qui implemente le TableCellEditor..
j'éspère trouver l'aide , c trés important.. merci d'avance!!
class EachRowEditor implements TableCellEditor {
protected Hashtable editors;
protected TableCellEditor editor, defaultEditor;
JTable table;
JCheckBox cb=new JCheckBox();
/**
* Constructs a EachRowEditor. create default editor
*
* @see TableCellEditor
* @see DefaultCellEditor
*/
public EachRowEditor(JTable table) {
this.table = table;
editors = new Hashtable();
defaultEditor = new DefaultCellEditor(cb);
}
cs_biboobib
Messages postés95Date d'inscriptiondimanche 29 juillet 2007StatutMembreDernière intervention27 août 20111 7 mai 2008 à 20:34
enfin j'ai trouver une petite solution pour ca!
j'ai utliser la méthode
stateChanged() de la class Changelistener!! il intercepte les
changement dans la checkBox est renvoi l'index de la ligne selectionné ..
et j'ai jouer sur des variables pour atteindre mon but..!
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 3 mai 2008 à 18:46
Slt.
Pour ajouter un listener a ta JCheckBox tu peux faire (valable pour n'import qul composants du paquetage swing) :
maCheckBox.addChangeListener(new ChangeListener () {
public void stateChanged (ChangeEvent evt) {
//Choses à faire lorsque la JCheckBox à changé d'état
}
}
cs_biboobib
Messages postés95Date d'inscriptiondimanche 29 juillet 2007StatutMembreDernière intervention27 août 20111 4 mai 2008 à 00:29
j'ai ajouter le listener dans le constructeur de ma class EachRowEditor , le problém c'est que dans le JTable il ya plusieurs JChekBox (1 dans chaque ligne) , alors il ecoute sur tt les JCheckBox , j vais t'expliqué:
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 4 mai 2008 à 10:45
Slt.
Ajoute le listener à chaque JCheckBox. Si tu dois faire plusieurs fois la même action, met ton code dans une méthode (genre "thingsToDo" ou qqc comme ca). Après, si les actions diffères suivant la checkbox (et son état), tu peux faire des testes conditionnels.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 5 mai 2008 à 10:20
lool .. xD
Par exemple, tu créer une JCheckBox à laquelle tu ajoute un ChangeListener ou un ActionListener. Après, tu l'ajoute à ta JTable. Pour la méthode thingsToDo (que tu peux appler autrement :p) c'est la méthode dans laquelle tu vas mettre les choses à faire lorsqu'une JCheckBox à changé d'état (pour éviter d'avoir trente six million de fois le même bout de code ;o ). Tu peux par exemple y tester si elle est sélectionner, ..
Si ce qe tu veux c'est ajouter autant de checkbox que de case, utilise une boucle "for" dans laquelle tu créer puis ajoute ton composant ..
cs_biboobib
Messages postés95Date d'inscriptiondimanche 29 juillet 2007StatutMembreDernière intervention27 août 20111 5 mai 2008 à 14:48
merci, dans ma class EachRowEditor (voir la class au dessus) ,j'ai fai un seul JCheckBox dans une ligne! et puisque mes donneé provienneent d'une base de donnée je pe pas savoir le nombre de JCheckBox que j'ai , c'est pour ca je peu pas faire une ActionListener ou ChangeListener a chaque JCheckBox!!
public void stateChanged(ChangeEvent evt) {
//box est le JCheckBox dans ma class de l'interface graphique de JTable
if(evt.getSource()==box)
{
if (box.isSelected()){
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 5 mai 2008 à 18:38
//Le vecteur das lequel tu as tes JCheckBox
Vector<JCheckBox> vBox = new Vector<JCheckBox>();
//Le modèle
JCheckBox model = null;
//Tu créer en boucle (tu dois forcément avoir un moyen de savoir le nombre de box que tu veux afficher .. nn?! )
for (int a=0; a<nbBox; a++) {
model = new JCheckBox("Ma boîte n°" + a);
model.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent evt) {
thingsToDo();
}
});
vBox.add(model);
}
//Le vecteur permet juste de stocké les box créees et de, si tu as besoins, de les modifiées
//Ensuite tu fais une autre boucle dans laquelle tu ajoutes tes box créees dans ta JTable.
C'est une solution que j'utilises de temps à autre lorsque je veux permettre à l'utilisateur de faire un choix "non limité" (qui ne dépend pas du programme lui-même).