Bonjour,
je rencontre une petite difficulté avec JOptionPane. Je souhaite afficher un JPanel avec deux ou trois trucs à cocher/remplir avant de passer à une étape suivante. Je veux donc que le bouton "Suivant" ne soit pas actif tant que les bonnes conditions ne sont pas réunies.

Je pensais donc utiliser la méthode showOptionDialog en passant un tableau de JButton comme Objets pour faire la liste de choix et pouvoir agir à coté avec setEnabled(boolean b) sur mon bouton "Suivant". J'ai donc écrit ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
annule=new JButton(ressources.getString("annule"));
suivant=new JButton(ressources.getString("suivant"));
JButton [] obj = {annule,suivant};
JOptionPane.showOptionDialog(null,doFirstPanel(),ressources.getString("creation"),JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,obj,obj[0]);
doFirstPanel() est une méthode interne privée qui me renvoie un JPanel qui s'affiche parfaitement sans problème.
ressources est un RessourceBundle pour l'internationalisation

Si je clique sur l'un ou l'autre bouton, rien ne se passe. Par contre si j'utilise un tableau d'objet String comme d'habitude:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Object[] obj={ressources.getString("annule"),ressources.getString("suivant")};
tout va bien mais je ne contrôle pas si le Bouton "Suivant" est cliquable ou non.

Comment est-ce au je peux réussir ce truc ?
Avec quelque chose comme ça ? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Object [] obj = {"annule","suivant"};
JOptionPane pane = new JOptionPane(doFirstPanel(),JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,obj,obj[0]);
JDialog dialog = pane.createDialog(null,ressources.getString("creation"));
//récupérer les boutons ?
dialog.show();
mais dans ce cas, comment récupérer les boutons ?
J'ai essayé de récupérer les boutons avec getOptions() mais ce que je récupère est ce que j'ai mis (plutot normal en fait ) , c'est à dire des JButtons mais inefficaces ou des Strings incontrôlables.

Où alors je dois enregistrer mes boutons quelque-part avant de les passer en options ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
annule=new JButton(ressources.getString("annule"));
suivant=new JButton(ressources.getString("suivant"));
JButton [] obj = {annule,suivant};
JOptionPane pane = new JOptionPane(doFirstPanel(),JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,obj,obj[0]);
JDialog dialog = pane.createDialog(null,ressources.getString("creation"));
//enregistrer les boutons quelque part  ?
dialog.show();
Dois-je laisser tomber le JOptionPane et créer moi même ma propre fenêtre modale ? à partir de Dialog par exemple?

J'ai regardé le tuto Java qui propose une méthode pour faire un contrôle avant de fermer le JOptionPane si l'utilisateur clique trop tôt, mais je préfèrerais que l'utilisateur ne puisse pas du tout cliquer sur le bouton Suivant tant que les conditions ne sont pas réunis.

merci pour votre aide .

Bon code,
kerinel