Raccourcit clavier.

nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004 - 21 juin 2004 à 12:20
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004 - 23 juin 2004 à 11:51
Bonjour,

j'ai un certain nombre de boutons dans mon application. Je souhaiterais mettre des raccourcit clavier dessus. Pour cela j'ai utilise le code suivant:
  requestFocus();

   public void keyPressed(KeyEvent evt){  System.out.println("nom");}
   public void keyReleased(KeyEvent evt){}
   public void keyTyped(KeyEvent evt)
   {
     String nom = ((JButton)evt.getSource()).getText();
     System.out.println("nom" + nom);
    }

jButton1.setMnemonic('C');
jButton1.setMnemonic('c');
jButton9.setMnemonic(KeyEvent.VK_R);

Mais ca marche pas, si quelqu'un avait une idee du pourquoi?

Petite description de mon prog.
C'est une calculatrice.
Elle est constitue de 3 classes:
- la principale qui gere le calcul
- la econde qui me sert de memoire
- la troisieme qui affiche les boutons.

Si vous voulez jeter un coup d'oeil dessus

 // je recuepere tous les import dont j'ai besoin
import java.awt.* ;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;

public class boutons extends JPanel implements  ActionListener{

// création des éléments et du layout
   GridBagLayout gridBagLayout1 = new GridBagLayout();
   JButton jButton1 = new JButton("1");
   JButton jButton2 = new JButton("2");
   JButton jButton3 = new JButton("3");
 //(etc...)

//je declare une variable dans lequel je vais mettre mon applet.
   private Applet1 c;

//erreur ici
//

public boutons (Applet1 c) {
this.c=c;
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

private void jbInit() throws Exception {
//creation des ecouteurs
    jButton1.addActionListener(this);
    jButton2.addActionListener(this);
    jButton3.addActionListener(this);
 //(etc...)

    //je mets tout l'affichage en place.

    this.setLayout(gridBagLayout1);

    // positionnement des éléments dans le GridbagLayout

    jButtonp.setPreferredSize(new Dimension(49, 25));
    jButtonp.setBackground(Color.green);
    jButtonp.setMaximumSize(new Dimension(41, 25));
    jButtonp.setMinimumSize(new Dimension(49, 25));
 //(etc...)

    this.add(jButton1,                                  new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    this.add(jButton2,                                  new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
 //(etc...)

 }

      /** gestion des événements */
    public void actionPerformed(ActionEvent e) {
        //je recupere le nom du bouton puis le premier char de ce nom
        String nom = ((JButton)e.getSource()).getText();
        char nompremiercar = nom.charAt(0);

        //j'appelle resultat qui se trouve dans l'applet
        c.calcul(nompremiercar);

      }

}

//-----------------------------------------------------------

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class Applet1 extends Applet{

  boolean isStandalone = false;
  JPanel fondcalc = new JPanel();
  GridBagLayout gridBagLayout1 = new GridBagLayout();
  JLabel jLabel1 = new JLabel("Bonjour !");
  static String chiffre = "0";
  boolean bool = false;
 // private double result = 0;//contient la valeur du calcul en cours
  char operateur = '+';//contient la valeur de l'operateur

  /**Obtenir une valeur de paramètre*/
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  /**Construire l'applet*/
  public Applet1() {
  }
  /**Initialiser l'applet*/
  public void init() {

    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**Initialiser le composant*/
  private void jbInit() throws Exception {

    fondcalc.setLayout(gridBagLayout1);

    boutons mazoneboutons=new boutons(this);

    jLabel1.setBackground(Color.white);
    jLabel1.setOpaque(true);
    jLabel1.setPreferredSize(new Dimension(72, 15));
    jLabel1.setVerifyInputWhenFocusTarget(true);
    jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);
    jLabel1.setHorizontalTextPosition(SwingConstants.RIGHT);
    jLabel1.setVerticalTextPosition(SwingConstants.CENTER);

    fondcalc.setBackground(SystemColor.control);
    fondcalc.setMinimumSize(new Dimension(200, 200));
    fondcalc.setPreferredSize(new Dimension(400, 300));
    fondcalc.add(jLabel1,            new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0
            ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 192, 0));
  fondcalc.add(mazoneboutons,       new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    this.add(fondcalc, null);

  }
  /**Obtenir les informations d'applet*/
  public String getAppletInfo() {
    return "Information applet";
  }
  /**Obtenir les informations de paramètre*/
  public String[][] getParameterInfo() {
    return null;
  }

  /** pour reinitialise ma varible chiffre... */
  void initia(){
    chiffre = "0";
  }

  /** pour reinitialise tout... */
  void initiatout(){
    memoirecalc = new MemoireCalc();
    operateur = '+';
    chiffre = "0";
    estegale = 0.0;
    resulta =0.0;
    bool = false;
    jLabel1.setText("Remise à "+estegale);
  }

  boolean boolcalc = false;//pour savoir si on doit faire le calcul
  /** Fait le calcul */
  static double resulta =0.0;
  static double resultb =10.0;
  static double estegale = 0.0;
  static char tempoperateur ='+';
  static double tmp;
 double test;

 private void faitlecalcul(){

    resulta = Double.parseDouble(chiffre);
    System.out.println("ici" + operateur + "temp" +tempoperateur+"res"+resulta);
    switch (operateur) {
 //(etc...)
      case '+':
        System.out.println("memoirea" + memoirecalc.resultinter());
        test = memoirecalc.resultinter();
        System.out.println("test" + test);
        test = test + resulta;
        memoirecalc = new MemoireCalc(test);
        System.out.println("memoireb" + memoirecalc.resultinter());

        jLabel1.setText("" + memoirecalc.resultinter());
        operateur = tempoperateur;
        break;

      default:
        jLabel1.setText("defaut +"+estegale+operateur+resulta+"temp"+tempoperateur);
        break;
    }
    initia();
    bool = false;
  }

/** en fonction du bouton appuye on fait differentes choses */
void calcul(char val){
    switch (val) {
      case 'O':
        initiatout();
        break;
      case '+':
        tempoperateur = '+';
        faitlecalcul();
        break;
 //(etc...)
      default:
            System.out.println("defaut" + operateur + "temp" +tempoperateur+"res"+resulta);
        if(tempoperateur=='='){
          initiatout();
        }
        if(bool == true){
          chiffre =chiffre+val;
        }else{
          chiffre = ""+val;
          bool = true;
        }

        jLabel1.setText(""+chiffre);
        break;
    }

  }

//je construit ma classe memoire
MemoireCalc memoirecalc = new MemoireCalc();
//
}

//----------------------------------------------------------------------------------------

/** conserve en memoire le resultat de mon calcul */
class MemoireCalc{
    double resultinter;//contient le resultat intermediaire
    double M1;//bouton memoire 1
    double M2;//bouton memoire 2

    MemoireCalc() {//pour surcharger ma classe
      resultinter = 0;
      M1 = 0;
      M2 = 0;
    }

    MemoireCalc(double resultinter) {//methode qui enregistre nouvelle valeur intermediaire
      this.resultinter = resultinter;
    }

    double resultinter() {//methode renvoyant la valeur du resultat intermediare
      return resultinter;
    }
}



d'avance merci

23 réponses

nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
22 juin 2004 à 12:02
ok merci
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
23 juin 2004 à 08:20
Au fait pour le pave numerique la constante a utiliser est VK_NUMPAD2 si tu veux le chiffre '2' et comme ca pour ltous les autres chiffres

cid019
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
23 juin 2004 à 11:51
okay merci
0
Rejoignez-nous