IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Simulation de clic


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut Simulation de clic
    Bonjour,

    Je sais que ce sujet a déjà été traité plusieurs fois, mais malgré ma recherche sur le forum je n'ai pas trouvé comment faire...

    Voilà je voudrais que quand l'utilisateur appuie sur la touche "0", la calculatrice que j'ai créé fasse la même chose que lorsque je clique sur la touche "0"...

    J'ai essayé de mettre un KeyListener sur la JDialog et sur son contentPane, mais ça n'a pas marché...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    public class FormulaCalculatorDialog extends JDialog {
    	private String formula;
    	private JTextField formulaText;
    	private boolean isOk = false;
    	private JMenuBar menuBar;
    	private JMenu fileMenu;
    	private JMenuItem saveItem;
    	private JMenuItem loadItem;
    	private JMenu helpMenu;
    	private JMenuItem helpItem;
    	private JPanel textPanel;
    	private JPanel numPanel;
    	private JButton b0;
    	private JButton b1;
    	private JButton b2;
    	private JButton b3;
    	private JButton b4;
    	private JButton b5;
    	private JButton b6;
    	private JButton b7;
    	private JButton b8;
    	private JButton b9;
     
     
    	public FormulaCalculatorDialog(JFrame parent, String initFormula) throws HeadlessException {
    		super(parent, "Définition d'une formule mathématique", true);
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setResizable(false);
     
    		formulaText = new JTextField();
     
    		if (initFormula != null && initFormula.length() > 0) {
    			formula = initFormula;
    		}
    		else {
    			formula = "";
    		}
     
    		//**** Menu Bar : save + help
    		[...]
     
     
     
    		//**** Content of the window
    		BorderLayout layout = new BorderLayout();
    		layout.setHgap(5);
    		layout.setVgap(5);
    		getContentPane().setLayout(layout);
     
     
    		//** Text field containing the formula
    		textPanel = new JPanel();
    		textPanel.setLayout(new BorderLayout());
    		getContentPane().add(textPanel, BorderLayout.NORTH);
     
    		formulaText.setEditable(false);
    		formulaText.setBackground(Color.WHITE);
    		formulaText.setText(formula);
    		textPanel.add(formulaText);
     
     
    		//** Numeric buttons
    		numPanel = new JPanel();
    		numPanel.setLayout(new GridLayout(5,4));
    		getContentPane().add(numPanel, BorderLayout.WEST);
     
    		b0 = new JButton("0");
    		b0.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				addTerm("0");
    			}	
    		});
    		b1 = new JButton("1");
    		b1.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				addTerm("1");
    			}	
    		});
     
    		[...]
     
    		numPanel.add(bOpenBracket);
    		numPanel.add(bCloseBracket);
    		numPanel.add(bExp);
    		numPanel.add(bLog);
    		numPanel.add(b7);
    		numPanel.add(b8);
    		numPanel.add(b9);
    		numPanel.add(bDiv);
    		numPanel.add(b4);
    		numPanel.add(b5);
    		numPanel.add(b6);
    		numPanel.add(bMult);
    		numPanel.add(b1);
    		numPanel.add(b2);
    		numPanel.add(b3);
    		numPanel.add(bMinus);
    		numPanel.add(b0);
    		numPanel.add(bPm);
    		numPanel.add(bDot);
    		numPanel.add(bPlus);
     
    		[...]
     
    		// où ajouter le keyListener???
     
    		addKeyListener(new KeyAdapter() {
    			public void keyTyped(KeyEvent ke) {
    				System.out.println("ok");
    				switch (ke.getKeyCode()) {
    					case KeyEvent.VK_0 :
    						System.out.println("0");
    						b0.doClick();
    						break;
    					case KeyEvent.VK_1 :
    						break;
    					default :
    						break;
    				}
    			}
    		});
     
     
     
    		this.pack();
    		setLocation(Dialog.getCenterPosition(this));
    		setVisible(true);
    Merci d'avance!

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Personne ne sait sur quel composant je dois ajouter le KeyListener? Ou comment je pourrais faire autrement?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 100
    Points
    100
    Par défaut
    Salut,
    Donne un peu de temps, non !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            if(evt.getKeyChar()=='0'){
            jButton1.doClick();
            System.out.println("click");}
    ca marche comme ca.
    bon dev

  4. #4
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Ben j'ai laissé 3/4 d'heure, c'est pas mal déjà
    Bon sinon sérieusement, c'est à peu près ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    addKeyListener(new KeyAdapter() { 
             public void keyTyped(KeyEvent ke) { 
                System.out.println("ok"); 
                switch (ke.getKeyCode()) { 
                   case KeyEvent.VK_0 : 
                      System.out.println("0"); 
                      b0.doClick(); 
                      break; 
                   case KeyEvent.VK_1 : 
                      break; 
                   default : 
                      break; 
                } 
             } 
          });
    Sauf que ça marche pô
    Je ne sais pas à quel composant associer ce KeyListener : sur la JDialog, ça marche pô, et sur le getContentPane() de cette même JDialog non plus...

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Tu peux ajouter le KeyListener à la JDialog à condition de rendre celle-ci "focusable" :Par contre, et c'est là que je sèche, si ta JDialog perd le focus, ça ne marchera plus.. en l'occurrence, dès que tu cliqueras sur un bouton, le focus est perdu comment le lui redonner ? c'est un peu pénible de faire un requestFocus() en fin de chaque événement ?

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Effectivement, comme ça, ça marche, mais dès la perte de focus, c'est foutu... Pas cool

    Pourquoi il n'existe pas des accelerator pour les boutons?...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 100
    Points
    100
    Par défaut
    Sur un Dialog, il faut lui dire de gagner le focus avant sinon ca marche pas.
    requestFocus();
    edit : grilled ^^

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    Bon comme à chaque fois que j'appuis sur une touche, j'appelle la même méthode qui met à jour le champ texte où s'affiche la formule, j'ai juste rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.requestFocus();
    Et puis ça roule. c'est un peu bourrin, mais ça marche nickel, alors on va pas se plaindre
    Merci à tous et à toutes!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET]Simuler un clic sur un bouton
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/03/2006, 12h46
  2. Réponses: 11
    Dernier message: 05/01/2006, 00h57
  3. Réponses: 7
    Dernier message: 26/10/2005, 13h54
  4. Simuler un clic de souris
    Par kabikou dans le forum Access
    Réponses: 1
    Dernier message: 28/09/2005, 14h43
  5. [JToggleButton] simuler un clic
    Par norkius dans le forum Composants
    Réponses: 4
    Dernier message: 30/05/2005, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo