2012-05-05 7 views
2

Я хочу, чтобы моя система попыталась пометить значок всплывающего сообщения, но это не так. Это код. Он должен появиться, если выполняется простая инструкция if, но ничего не происходит. Значок в системном трее отображается, и при щелчке левой кнопкой мыши на нем отображается меню.Сообщение на воздушном шаре в системном лотке не отображается java

package systemtray; 

import java.awt.*; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Systemtray { 

public static void main(String[] args) { 

    TrayIcon trayIcon = null; 
    if (SystemTray.isSupported()) { 
     // get the SystemTray instance 
     SystemTray tray = SystemTray.getSystemTray(); 
     // load an image 
     Image image = Toolkit.getDefaultToolkit().getImage("D:/xxx/facebook.jpg");   
     // create a action listener to listen for default action executed on the tray icon 
     ActionListener listener = new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       // execute default action of the application 
      } 
     }; 

    // create a popup menu 
    PopupMenu popup = new PopupMenu(); 
    //create menu item for the default action 
    MenuItem defaultItem = new MenuItem("A menu item"); 
    defaultItem.addActionListener(listener); 
    popup.add(defaultItem); 
    /// ... add other items 
    // construct a TrayIcon*/ 
    trayIcon = new TrayIcon(image, "Tray Demo", popup); 


    int a = 0; 
    int b = 1; 
    if (a + b == 1){ 
    trayIcon.displayMessage("Message Title", 
     "Message Content", 
     TrayIcon.MessageType.INFO); 
    } 
    // set the TrayIcon properties 
    trayIcon.addActionListener(listener); 
    // ... 
    // add the tray image 
    try { 
     tray.add(trayIcon); 
    } catch (AWTException e) { 
     System.err.println(e); 
    } 
    // ... 
} else { 
    // disable tray option in your application or 
    // perform other actions 
} 
// ... 
// some time later 
// the application state has changed - update the image 
// if (trayIcon != null) { 
    // trayIcon.setImage(updatedImage); 
//} 
// ... 
} 
} 
+1

Выстрел в темноте, но вы пытаетесь отобразить воздушный шар до того, как значок будет добавлен в лоток. Попробуйте добавить его в лоток, затем отобразите воздушный шар. –

+0

Спасибо, ты был прав –

ответ

3

Вы не можете отобразить всплывающее окно, если значок не отображается. Сначала вы должны указать значок (который, как я полагаю, составляет tray.add в вашем коде).

+0

Спасибо, ты был прав –