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

Composants Java Discussion :

Associer une touche clavier à un bouton


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 17
    Par défaut Associer une touche clavier à un bouton
    Bonjour,

    J'ai une JList dans laquelle il y a des éléments et au dessous un bouton "Supprimer" qui me permet de supprimer l'élément sélectionné. Vous l'aurez compris je cherche à associer à ce bouton la touche "Suppr" du clavier. Le bouton fonctionne bien.
    Voici mon actionPerformed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void actionPerformed (ActionEvent oEvent) 
    	{
    		Object oSource = oEvent.getSource ();
    		if (oSource == __oButtonSave)__onButtonSaveClick (oEvent);
    		else if (oSource == __oButtonSaveAs)__onButtonSaveAsClick (oEvent);
    		else if (oSource == __oButtonClearProfile)__onButtonClearProfileClick (oEvent);	
    		else if (oSource == __oButtonConnect)__onButtonConnectClick (oEvent);
    		else if (oSource == __oButtonCancel)__onButtonCancelClick (oEvent);
    	}
    La méthode du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void __onButtonClearProfileClick (ActionEvent oEvent)
    	{
    		__oProfileList.removeProfileEntry (__oProfileList.getSelectedValue ());
    Merci de vos réponses. J'ai essayé certaines choses mais je m'y perd un peu entre KeyListener, KeyStroke, KeyEvent, sans parler de créer un Map, ce qui me semble assez compliqué pour juste intercepter une touche et qu'elle réalise la même action qu'un bouton.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 113
    Par défaut
    C'est a la JList que tu dois ajouter un intercepteur pour le clavier et non au bouton. (qui appellera ce qu'appelle le bouton).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 17
    Par défaut
    Ca me semble plus logique en effet, mais je ne vois pas trop comment m'y prendre, et les tutos genre how tu use d'oracle ne m'ont pas aidé...

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 113
    Par défaut
    Bah comme pour tout les composants swing, il y à la méthode AddKeyListener et la classe réceptrice doit implémentée KeyListener.

    Sinon voire ceci peut être cela te parlera.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Une autre solution avec setMnemonic(). Il faut alors appuyer sur alt + la touche désirée. Mais ça fonctionne bien.

    Voici un exemple :

    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
     
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
     
    public class TestMnemonic extends JFrame implements ActionListener{
     
    	JPanel panel1 = new JPanel();
    	JButton bouton1 = new JButton("Bouton");
    	DefaultListModel dlm;
    	JList list;
     
    	public TestMnemonic(){	
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(500,200);
    		panel1.setPreferredSize(new Dimension(500,200));
    		panel1.add(bouton1);
    		JLabel label = new JLabel("Appuyer sur le bouton ou sur alt B pour effacer l'objet selectionne dans la liste");
    		panel1.add(label);
    		dlm = new DefaultListModel();
    		for (int i=0;i<5;i++) 
    			dlm.addElement(new Integer(i));
    		list = new JList(dlm);
    		list.setPreferredSize(new Dimension(100,100));
    		panel1.add(list);
    		bouton1.addActionListener(this);
    		bouton1.setMnemonic(KeyEvent.VK_B);
    		add(panel1);
    		setVisible(true);
    	}
     
     
    	public static void main(String[] args) {
    		TestMnemonic ff = new TestMnemonic();
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		dlm.removeElementAt(list.getSelectedIndex());
    	}
    }

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 17
    Par défaut
    J'avais déjà regarder ce tuto. J'ai implémenté ma classe de l'interface KeyListener, ajouté les 3 méthodes KeyEvent associée (keyTyped, keyPressed et keyReleased). J'ai mis la méthode qui éxécute l'action sur le bouton dans KeyPressed. Je ne penses pas que ce soit nécessaire de coder les 2 autres méthodes ?
    Ensuite je suis désolé mais je n'ai pas beaucoup de pratique de JAVA, ni de développement donc ça peut paraitre facile pour toi, mais moi je m'arrache les cheveux

    Il me faut maintenant dire quelque part et je ne sais ou, que c'est sur la touche Suppr. que je veux que cette action se fasse. Je sais déjà que quelque part j'ai KeyEvent.VK_DELETE à mettre (que j'ai récup dans la javadoc de Class KeyEvent). Et c'est la ou je suis perdu.

    Je pensais faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaJList.getKeyListeners (KeyStroke.getKeyStroke (KeyEvent.VK_DELETE,  + JE SAIS PAS QUOI);
    Mais je patauge et je ne vois pas ou rappeler ma méthode KeyPressed dans tout ça. J'ai cherché mais la je suis bloqué depuis un moment la dessus...

  7. #7
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Essaies ma methode qui est plus simple,

    Dans mon exemple, tu pourras effacer les objets de la liste en appuyant sur alt B


    sinon autre solution comme celle proposée :

    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
     
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
     
     
    public class TestMnemonic extends JFrame implements ActionListener,KeyListener{
     
    	JPanel panel1 = new JPanel();
    	JButton bouton1 = new JButton("Bouton");
    	DefaultListModel dlm;
    	JList list;
     
    	public TestMnemonic(){	
     
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(500,200);
    		panel1.setPreferredSize(new Dimension(500,200));
    		panel1.add(bouton1);
    		JLabel label = new JLabel("Appuyer sur le bouton ou sur alt B pour effacer l'objet selectionne dans la liste");
    		panel1.add(label);
    		dlm = new DefaultListModel();
    		for (int i=0;i<5;i++) 
    			dlm.addElement(new Integer(i));
    		list = new JList(dlm);
    		list.setPreferredSize(new Dimension(100,100));
    		list.addKeyListener(this);
    		panel1.add(list);
    		bouton1.addActionListener(this);
    		add(panel1);
    		setVisible(true);
    	}
     
     
    	public static void main(String[] args) {
    		TestMnemonic ff = new TestMnemonic();
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		dlm.removeElementAt(list.getSelectedIndex());
    	}
     
    	public void keyPressed(KeyEvent e) {
    		if (e.getKeyCode() == KeyEvent.VK_S)
    			bouton1.doClick();
    	}
    	public void keyReleased(KeyEvent e) {
     
    	}
    	public void keyTyped(KeyEvent e) {
     
    	}
    }

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

Discussions similaires

  1. [Débutant] Associer une touche à un bouton
    Par Bencici dans le forum VB.NET
    Réponses: 14
    Dernier message: 03/06/2012, 16h01
  2. [Débutant] Associer un bouton du gui avec une touche clavier
    Par gc001 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 20/04/2012, 14h56
  3. Associer une touche clavier à un ImageButton
    Par baldebaran dans le forum C#
    Réponses: 2
    Dernier message: 09/04/2009, 10h26
  4. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23

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