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

Interfaces Graphiques en Java Discussion :

Creations de touches "globales"


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 33
    Par défaut Creations de touches "globales"
    Salut,

    Je suis sur le developpement d'une application avec plusieurs fenetres.

    Comment-ce que je peux faire, d'une façon simple, pour qu'où que je sois dans mon application si je clique sur une touche clavier (genre F3) il se passe toujours la meme chose ?

    Je donne un exemple :
    disons que mon application comporte 4 fenetre :
    fen1, fen2, fen3 et fen4

    Comme faire pour qu'en cliquant à n'importe quelle moment sur la touche F2 ça m'ouvre la fenetre fen2
    ou
    quand je clique sur F3 ça m'ouvre la fenetre fen3

    ??

    J'espère avoir été assez explicite !?!?


    A bientot et merci d'avance


    ZD

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    ptêt avec un getKeyListeners()

    cordialement

  3. #3
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    La première chose est qu'il faut qu'au moins une de tes fenêtres ait le focus.

    Puis je pense qu'il faut utiliser les Key Bindings, dont tu pourras trouver le mode d'emploi ici : How to Use Key Bindings. Il faudra que tu utilises les JComponent.WHEN_IN_FOCUSED_WINDOW.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 33
    Par défaut
    Salut,

    J'ai un peu essayé avec Binding mais je n'arrive a appliquer le principe qu'au composants (boutons, etc...) Ce que j'aimerais c'est arriver à appliquer ca a toute l'application soit toutes les fenetres

  5. #5
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    tu a 2 solutions:
    1) creer ton EventQueue a toi
    2) utiliser un AWTEventListener

    voila un rapide code avec ces deux idee c'est plus facile a comprendre avec un petit 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
     
    import java.awt.AWTEvent;
    import java.awt.EventQueue;
    import java.awt.Toolkit;
    import java.awt.FlowLayout;
    import java.awt.event.AWTEventListener;
    import java.awt.event.KeyEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    import javax.swing.JLabel;
     
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     * Date: 01-Oct-2006
     * Time: 21:48:16
     * To change this template use File | Settings | File Templates.
     */
    public class KeyListenerOnTopLevel {
     
        public static void main(String[] args) {
     
            EventQueue queue = new EventQueue() {
                protected void dispatchEvent(AWTEvent event) {
                    super.dispatchEvent(event);
     
                    if (event.getID() == KeyEvent.KEY_PRESSED)
                        System.out.println("1) queue: " + event);
                }
            };
            Toolkit.getDefaultToolkit().getSystemEventQueue().push(queue);
     
     
            Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
                public void eventDispatched(AWTEvent e) {
                    if (e.getID() == KeyEvent.KEY_PRESSED)
                        System.out.println("2) listener: " + e);
     
                }
            }, AWTEvent.KEY_EVENT_MASK);
     
     
            // petit test
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    JFrame myFrame = new JFrame();
                    myFrame.setLayout(new FlowLayout());
                    myFrame.add(new JButton("button"));
                    myFrame.add(new JButton("button"));
                    myFrame.add(new JTextField("textfield"));
                    myFrame.add(new JLabel("label"));
                    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    myFrame.pack();
                    myFrame.setVisible(true);
                }
            });
        }
    }

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