Je souhaite pouvoir utiliser dans mes programmes une fenetre qui ressemble à un pavé numérique. Quand l'utilisateur doit effectuer une saisie, la fenetre pavenumérique s'ouvre et retourne à la méthode qui l'appelle la valeur de ce qui a été affiché dans le champ d'affichage du pavé numérique. (l'interet pour moi serait de construire plusieurs "pavés numériques" qui ne contiennent que les valeurs que l'utilisateur peut saisir...).
J'ai réussi à créer la fenetre du pavenumérique, et de gérer les actions des clics sur les boutons à l'INTERIEUR de la classe Pavenum.
Ma classe Pavenum se présente ainsi :
- import des classes javax.swing et java.awt nécessaires
- definition de la classe : public class Pavenum extends JFrame{
- initialisation des boutons du pavé : private JButton boutinfo = new JButton();private JButton bout7 = new JButton();....
- je définis une méthode Pavenum() : public Pavenum(){
- definition de la fenetre et de la disposition : this.setTitle("Pavé Numérique");this.setLayout(new GridBagLayout());...
- pour chaque bouton, je paramètre les attributs, l'ajoute au panel et définit à quel listener il se rattache par exemple touche "7":
bout7 = new JButton("7");c.ipady=40;c.ipadx=40; c.fill=GridBagConstraints.HORIZONTAL;c.gridx=0;c.gridy=3;c.gridwidth=1;bout7.setFont(chiffre); bout7.addActionListener(new ChiffreListen()); this.getContentPane().add(bout7,c);
- enfin, dans ma classe Pavenum, je définis les méthodes des listener exemple pour un bouton chiffre: public class ChiffreListen implements ActionListener { public void actionPerformed(ActionEvent even) { String str = affsaisie.getText(); String str2 = affsaisie.getText() + ((JButton)even.getSource()).getText(); affsaisie.setText(str2);
Tout fonctionne bien, la chaine deS caractéres saisis en cliquant sur les différents boutons est affichée dans la fenetre... et j'ai donc un JTextfield qui contient la chaine de caractères qui a été saisie.
MAIS ce qui m'intéresse dans ce pavé numérique c'est que :
1° il se ferme pour revenir à un autre écran, quand l'utilisateur clique sur bouton Entrée.
2° qu'à ce moment il RETOURNE LA VALEUR CONTENUE dans le JTextfield du Pavenum au programme principal.
J'arrive à fermer le pavé en insérant System.exit(0) dans la méthode ActionListener de la touche Entrée. MAIS je perds le contenu de la chaine saisie.
Le mot clé RETURN ne fait pas sortir de Pavenum mais simplement du listener.
Ma classe principale est écrite ainsi, et je pensais pouvoir récupérer dans l'objet pave1 la valeur de la chaine saisie... mais non!!!
public class Saisie
public static void main(String[] args) {
{ Pavenum pave1 = new Pavenum();
System.out.println(pave1);
Merci de votre aide
Partager