nonoz
Messages postés57Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention23 juin 2004
-
21 juin 2004 à 12:20
nonoz
Messages postés57Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention23 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;
}
}