-
un JTabbedPane Listener?
Salut tout le monde :D
Je suis relativement débutant en Java, et je me casse présentement la tête avec mon JTabbedPane...
J'ai donc un JTabbedPane contenant 3 onglets. En dessous de mon JTabbedPane, j'ai un panel remplit de JTextField, une sorte de formulaire si vous voulez. Je veut qu'un de mes onglets permette la modification de mes JTextField (appelons-le l'onglet modif). Lorsque c'est un ou l'autre des onglets qui est valide, mes champs texte sont setEditable(false). J'active ou désactive mes champs avec un Change Listener sur mon TabbedPane.
Toutefois, je cherche un moyen de savoir quelle onglet était sélectionné avant de faire mon changement d'onglet, de sorte à pouvoir faire les validations que je veut. En gros, quand l'utilisateur est dans l'onglet modif, s'il tente de changer d'onglet, je veut valider s'il a modifié un ou plusieurs champs. S'il n'a rien modifié, je laisse le changement d'onglet se faire. Si par contre il a modifié des trucs, je veut annuler son changement d'onglet et lui demander de sauvegarder ses modifications ou de les annuler avant de quitter l'onglet.
J'ai fait quelque chose de semblable avec mes champ texte. S'il y a un problème, avertit l'utilisateur et garde le focus sur le champs. Mais avec les onglets... je voit pas... quelqu'un a une idée?
Merci d'avance pour l'aide! :)
-
Bonjour,
Pour les TabbedPane, c'est un ChangeListener que tu devras implémenter.
En l'associant à ton JTabbedPane avec addChangeListener(), il sera appellé chaque fois que l'utilisateur tente de changer d'onglet.
Fred
-
Hum, j'ai déja un ChangeListener qui me permet de mettre en setEditable(false) mes champs texte, mais je n'arrivais juste pas a intercepté un changement d'onglet.
J'ai fouillé un peu... et j'ai trouvé le componentListener, qui combiner à la fonction "componentHidden" m'a fait penser que je pourrais intercepter le changement puisque le changement commence probablement par caché l'onglet en cours et ensuite faire apparaitre celui demandé.
Toutefois, le problème c'est que je n'arrive pas à empêcher le changement d'onglet... je dois faire quoi? Il y a des fonctions .setVisible, voir .setEnabled, mais il ne font rien puisque j'imagine que je ne peut pas changer le statut de l'onglet puisque le changement semble déja avoir été effectuer...
Merci pour ton aide.... je suis un peu perdu :?
-
Je te confirme que le ChangeListener est appelé pour notifier le changement d'onglet. Il te suffit de faire tes tests de validité et si tu souhaites interdire le changement d'onglet, utiliser la méthode setSelectedIndex() avec le numéro d'onglet sur lequel tu souhaites revenir.
Fred
-
Voila j'ai résolu mon problème!!!
En gros, ma logique fonctionnait, mais je m'y prenais de la mauvaise façon pour annuler le changement d'onglet :?
Donc merci a toi pour ton aide kwxyz :)