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 :

Systemtray, MouseListener et PopupMenu..


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Par défaut Systemtray, MouseListener et PopupMenu..
    Bonjour à tous,

    voila, j'ai un soucis de focus dans mon programme :
    L'icone du systemTray possède un menu, qui ouvre différentes fenetre, etc...(rien de nouveau quoi)
    Depuis le systemTray, je voudrais faire un clic (gauche) sur l'icone pour afficher une autre JFrame, qui a besoin du focus.

    J'ai donc mon PopupMenu qui marche impec, quand il ouvre les fenêtres celles ci ont le focus, OK.
    Par contre, la JFrame qui s'ouvre avec le mouseListener ne possède pas le focus... (la barre des programmes n'est même pas en surbrillance...)

    Je ne comprends pas pourquoi.

    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
     
    package alfred;
     
    import alfred.interpréteur.Interpréteur;
    import alfred.interpréteur.SystemTrayMouseListener;
    import java.awt.AWTException;
    import java.awt.Image;
    import java.awt.MenuItem;
    import java.awt.PopupMenu;
    import java.awt.SystemTray;
    import java.awt.Toolkit;
    import java.awt.TrayIcon;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    /**
     *
     * @author ivan
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
     
            final TrayIcon trayIcon;
     
            if (SystemTray.isSupported()) {
     
                SystemTray tray = SystemTray.getSystemTray();
                Image image = Toolkit.getDefaultToolkit().getImage("Graphisme/Alfred.gif");
     
                SystemTrayMouseListener mouseListener = new SystemTrayMouseListener();
     
                ActionListener exitListener = new ActionListener() {
     
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Au revoir...");
                        System.exit(0);
                    }
                };
     
                ActionListener ChatListener = new ActionListener() {
     
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Action chat listener !");
                       new Interpréteur();
                    }
                };
     
                PopupMenu popup = new PopupMenu();
                MenuItem defaultItem = new MenuItem("Au revoir");
                defaultItem.addActionListener(exitListener);
                popup.add(defaultItem);
                MenuItem testFocus = new MenuItem("Discuter");
                testFocus.addActionListener(ChatListener);
                popup.add(testFocus);
     
                trayIcon = new TrayIcon(image, "Alfred", popup);
     
                trayIcon.setImageAutoSize(true);
                trayIcon.addMouseListener(mouseListener);
     
                try {
                    tray.add(trayIcon);
                } catch (AWTException e) {
                    System.err.println("Impossible d'ajouter Alfred dans la barre de taches.");
                }
     
            } else {
     
                System.err.println("Alfred a besoin d'une barre de taches");
     
            }
     
     
        }
    }
    et la Classe qui gère la souris :
    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
     
    package alfred.interpréteur;
     
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    /**
     *
     * @author ivan
     */
    public class SystemTrayMouseListener implements MouseListener{
     
        public void mouseClicked(MouseEvent e) {
            if (e.getButton() == MouseEvent.BUTTON1) {
                new Interpréteur();
            }
        }
     
        public void mousePressed(MouseEvent e) {
        }
     
        public void mouseReleased(MouseEvent e) {
        }
     
        public void mouseEntered(MouseEvent e) {
        }
     
        public void mouseExited(MouseEvent e) {
        }
     
    }
    Voila, c'est surement rien du tout, mais je n'arrive vraiment pas à trouver, pourquoi le mouseListener ouvre la fenêtre, mais sans le Focus...
    D'ailleurs, si on fait le lien dans le popupMenu ("Discuter"), la fenetre s'ouvre bien et avec le focus, alors je soupsonne plutot un subtil détail que je ne connais pas..

    Merci de bien vouloir m'aider...

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Interpréteur interpréteur = new Interpréteur();
    // Je supose que 'setVisible(true);' est dans ton constructeur.
    interpréteur.toFront();

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Par défaut
    le SetVisible(true) est bien dans le constructeur.
    Je vais essayer le toFront(), mais je suis surpris que l'ouverture d'une JFrame ne se fait pas de la même manière avec le PopupMenu qu'avec le MouseListener... (version de java 6.0)

    En plus, j'me disais qu'il doit bien avoir beaucoup de programmes utilisant le systemTray, ils n'utilisent que le Popupmenu ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Par défaut
    Bravo, le toFront() a résolut le problème !

    en fait, la classe Interpréteur ouvrait une nouvelle fenêtre, il m'a suffit de rajouter le "toFront()" pour forcer le focus sur cette fenêtre (est ce qu'il était sur le systemTray ???)

    enfin bref, merci ngpub

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

Discussions similaires

  1. Insertion d'une icone dans le SystemTray
    Par Vow dans le forum MFC
    Réponses: 23
    Dernier message: 25/01/2008, 14h50
  2. Modifier la couleur de fond d'un popupmenu
    Par lil_jam63 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 05/08/2004, 20h23
  3. [MouseListener] Confusion de listener
    Par i.took.the.red.pill dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 18/06/2004, 14h42
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28

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