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 :
doFirstPanel() est une méthode interne privée qui me renvoie un JPanel qui s'affiche parfaitement sans problème.
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]);
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:
tout va bien mais je ne contrôle pas si le Bouton "Suivant" est cliquable ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Object[] obj={ressources.getString("annule"),ressources.getString("suivant")};
Comment est-ce au je peux réussir ce truc ?
Avec quelque chose comme ça ? :
mais dans ce cas, comment récupérer les boutons ?
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();
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 ?
Dois-je laisser tomber le JOptionPane et créer moi même ma propre fenêtre modale ? à partir de Dialog par exemple?
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();
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
Partager