java 中如何实现托盘(Tray),1.6之前是没有原生支持的。1.6之后,可以使用:
java.awt.SystemTray
java.awt.TrayIcon
http://java.sun.com/javase/6/docs/api/java/awt/SystemTray.htmlhttp://www.java2s.com/Code/Java/JDK-6/CreateTrayIcon.htm不过呢,目前 SystemTray 只支持 win32, GNOME, KDE,其他的 WindowsManager 自然是不支持的。
SystemTray.isSupported() 会告诉你目前是否支持 Tray。
--------------- java/awt/SystemTray.java -------------
public static boolean isSupported() {
if (Toolkit.getDefaultToolkit() instanceof SunToolkit) {
return ((SunToolkit)Toolkit.getDefaultToolkit()).isTraySupported();
} else if (Toolkit.getDefaultToolkit() instanceof HeadlessToolkit) {
return ((HeadlessToolkit)Toolkit.getDefaultToolkit()).isTraySupported();
}
return false;
}
--------------- sun/awt/X11/XToolkit.java (subclass of SunToolkit) -------------
public boolean isTraySupported() {
int wm = XWM.getWMID();
if (wm == XWM.METACITY_WM || wm == XWM.KDE2_WM)
{
return true;
}
return false;
}
其中 Metacity 就是 GNOME。
--------------------------------
我的 IceWM 还不能些 Tray 程序了,汗~
评论