2 Stimmen

Wie verwendet man das Kontextmenü mit dem Tray-Symbol in Java?

Ich verwende Netbeans, um eine Java-Anwendung zu entwickeln, und ich möchte ein Tray-Symbol im Systemtray erstellen, und ein Popup-Menü wird angezeigt, wenn ich mit der rechten Maustaste auf das Tray-Symbol klicke.

Ich habe einen Jframe und ein Popup-Menü per Drop & Drap erstellt.

Aber ich habe ein Problem: Mein Popup-Menü hat 2 Menüpunkte ( Ausfahrt y Anmeldung anzeigen ), aber der ausgewählte Menüpunkt wird nicht hervorgehoben, und nachdem ich auf den Menüpunkt geklickt habe, wird das Popup-Menü nicht geschlossen.

Hier ist mein Code:

Deklarieren Sie einige globale Variablen

SystemTray systemTray = null;
Image image = Toolkit.getDefaultToolkit().getImage("D:/key-16x16.png");

TrayIcon trayIcon = new TrayIcon(image);

Symbol für die Systemablage erstellen und anzeigen

 systemTray = SystemTray.getSystemTray();
    try
    {
        systemTray.add(trayIcon);
    } catch (AWTException ex)
    {
        Logger.getLogger(mainframe.class.getName()).log(Level.SEVERE, null, ex);
    }

MouseAdapter erstellen und mouseListener für Tray-Icon hinzufügen

MouseAdapter trayIconMouseAdapter = new MouseAdapter()
    {
      //  @Override
       public void mouseClicked(MouseEvent e) {
                trayIconMouseClicked(e);
       }
    };

   trayIcon.addMouseListener(trayIconMouseAdapter);

Mausklick-Ereignis auf Tray-Symbol behandeln. Prüfen, ob es sich um einen Rechtsklick handelt und Popup-Menü anzeigen

private void trayIconMouseClicked(java.awt.event.MouseEvent evt) {

    if(SwingUtilities.isRightMouseButton(evt))
    {
      popupMeunu.show(evt.getComponent(), evt.getX(), evt.getY());

    }
}

Aber wenn ich eine Schaltfläche zu jframe drapieren und ersetzen popupMeunu.show(evt.getComponent(), evt.getX(), evt.getY()); por popupMeunu.show(jButton1, evt.getX(), evt.getY()); wird alles in Ordnung sein.

Ich weiß nicht, warum Bitte helfen Sie mir, mein Problem zu lösen.

4voto

Peter Lang Punkte 52229

Fügen Sie nicht Ihren eigenen MouseListener hinzu.

Übergeben Sie Ihr popupMeunu (die eine der folgenden sein muss java.awt.PopupMenu , nicht javax.swing.JPopupMenu ) im Konstruktor von TrayIcon so:

TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);

Ich habe dies von dieser Seite kopiert Lehrgang und es hat gut funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X