2013-07-21 2 views
0

Java의 TrayIcon 클래스를 사용하는 응용 프로그램을 작성하고 있지만 Windows XP/Vista에서 메시지를 표시 할 수 없습니다. 이 문제가 알려진 것이거나 내가 누락 된 것이 있습니까? (그들은 Windows 7에서 정상적으로 메시지가 나타납니다)Windows XP, Vista에서 Java - TrayIcon 메시지가 표시되지 않습니다.

코드 :

public class SysTray { 
    public static void main(String[] args) throws Exception { 
     TrayIcon icon = new TrayIcon(getImage()); 

     icon.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       JOptionPane.showMessageDialog(null, "Good"); 
      } 
     }); 
     SystemTray.getSystemTray().add(icon); 

     icon.displayMessage("Attention", "Please click here", 
      TrayIcon.MessageType.WARNING); 
    } 

    private static Image getImage() throws HeadlessException { 
     Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon(); 
     Image img = new BufferedImage(defaultIcon.getIconWidth(), 
      defaultIcon.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR); 
     defaultIcon.paintIcon(new Panel(), img.getGraphics(), 0, 0); 

     return img; 
    } 
} 

편집 : 여러 컴퓨터에서 테스트 결과 : 컴퓨터가 모두 최신 버전의 Java

편집 II를 사용하고

    윈도우 XP, J7_25 (1.7.0_25-B16)이
  • : 직장 :
  • 윈도우 7, J7_25 (1.7.0_25-B17)를 작동 의
  • 윈도우 XP, J7_25 (1.7.0_25-B17)이 :
+0

아니오 displayMessage() with WinXP/7/8 (Vista는 사용하지 않음)> JDK_6.18 – mKorbel

+0

@mKorbel 두 가지 컴퓨터가 모두 버전에 있음> 6.18 – Timr

+0

죄송합니다. 귀하의 의견은 귀하의 질문보다 분명하지 않습니다. 다만 호기심을 불러 일으키지 마십시오. 그렇지 않으면 (SSCCE (http://sscce.org/), 짧고, 실행 가능한, 편집 가능한) WinXP에 부족함이 있습니다.) StringConstants는 JNI/A에서 호출 된 C++ /. Net에서 가져온 것이거나 일부 hand_Made입니다. – mKorbel

답변

1

가 (모두의 JDK 테스트 Java6_022 및 Java7_21를) 일이 뭐죠 참조 작동하지 않습니다

WINXP - ->enter image description here

Win8 - -> 코드에서 enter image description here

import java.awt.AWTException; 
import java.awt.EventQueue; 
import java.awt.HeadlessException; 
import java.awt.Image; 
import java.awt.SystemTray; 
import java.awt.TrayIcon; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.image.BufferedImage; 
import javax.swing.Icon; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.plaf.metal.MetalIconFactory; 

public class SysTray { 

    public SysTray() { 
     TrayIcon icon = new TrayIcon(getImage()); 
     icon.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       JOptionPane.showMessageDialog(null, "Good"); 
      } 
     }); 
     try { 
      SystemTray.getSystemTray().add(icon); 
     } catch (AWTException ex) { 
     } 
     icon.displayMessage("Attn","Click here",TrayIcon.MessageType.WARNING); 
    } 

    private Image getImage() throws HeadlessException { 
     Icon defaultIcon = MetalIconFactory.getTreeHardDriveIcon(); 
     Image img = new BufferedImage(defaultIcon.getIconWidth(), 
       defaultIcon.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR); 
     defaultIcon.paintIcon(new JPanel(), img.getGraphics(), 0, 0); 
     return img; 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       SysTray sysTray = new SysTray(); 
      } 
     }); 
    } 
} 
+0

OP – Timr

+0

에 대한 업데이트를 참조하십시오. 'Windows XP, J7_25 (1.7.0_25-b17) : 작동하지 않음', [검색 후보고] (http://search.oracle.com/ .com/search/search? search_p_main_operator = all & start = 1 & group = bugs.sun.com & q = trayicon) – mKorbel

+0

JDK1.6_022 및 JDK1.7._011에서 컴파일 된 최신 1.7.0_25-b17 win32b를 설치했습니다. – mKorbel