Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中添加和删除trayicon?_Java_Trayicon - Fatal编程技术网

在java中添加和删除trayicon?

在java中添加和删除trayicon?,java,trayicon,Java,Trayicon,我想在最小化窗口时将图标添加到系统托盘,并在最大化时将其删除 但我遇到了这个异常,无法解决它 线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:添加已添加的TrayIcon else if (e.getSource() == MinimizeButton) setState(IslamicProject.ICONIFIED); { // Test to see if supports Tr

我想在最小化窗口时将图标添加到系统托盘,并在最大化时将其删除 但我遇到了这个异常,无法解决它

线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:添加已添加的TrayIcon

 else if (e.getSource() == MinimizeButton)
        setState(IslamicProject.ICONIFIED);
    {       // Test to see if supports Tray
        if (SystemTray.isSupported())
        {
            //Create Tray
            tray = SystemTray.getSystemTray();

            Image image = Toolkit.getDefaultToolkit().getImage("D:/Art Gallary 2008/Islamic/forsan_03.gif");
            //create menu Items
            PopupMenu popup = new PopupMenu();
            MenuItem ExitMenu = new MenuItem("Exit");
            MenuItem OpenMenu = new MenuItem("Open");
           trayIcon = new TrayIcon(image, "The Tip Text", popup);

            //add the listeners of menu items
            ListenForExitMenu EXMU = new ListenForExitMenu();
            ListenForOpenMenu OPMU = new ListenForOpenMenu();
            ExitMenu.addActionListener(EXMU);
            OpenMenu.addActionListener(OPMU);
            //adds the listener so that when icon in tray is  clicked it opens up
            //trayIcon.addActionListener(OPMU);
            mouselis l = new mouselis();
            trayIcon.addMouseListener(l);
              // the window state listener tests to see the state of the frame
            addWindowStateListener(new WindowStateListener() {
                public void windowStateChanged(WindowEvent e) {
                    if (e.getNewState() == ICONIFIED)
                    {
                        try
                        {
                            tray.add(trayIcon);
                            setVisible(false);
                        } catch (AWTException ex)
                        {
                            System.err.println("Can't add to tray");
                        }
                    }
                    if (e.getNewState() == NORMAL)
                    {
                        tray.remove(trayIcon);
                        setVisible(true);
                    }
                }

            });
            // adding the open and exit to menu
            popup.add(OpenMenu);
            popup.add(ExitMenu);
        }
        else
        {
            System.err.println("Tray unavailable");
        }
    }
以下是一个例子:

import java.awt.*;
导入java.awt.event.*;
导入javax.swing.JFrame;
导入javax.swing.UIManager;
/**
*
*@作者穆罕默德·费萨尔
*ermohammadfaisal.blogspot.com
*facebook.com/m.faisal6621
*
*/
公共类HideToSystemTray扩展JFrame{
特拉伊孔-特拉伊孔;
系统托盘;
隐藏系统托盘(){
超级(“系统托盘测试”);
System.out.println(“创建实例”);
试一试{
System.out.println(“设置外观”);
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}捕获(例外e){
System.out.println(“无法设置LookAndFeel”);
}
if(SystemTray.issuported()){
System.out.println(“支持系统托盘”);
托盘=SystemTray.getSystemTray();
Image Image=Toolkit.getDefaultToolkit().getImage(“/media/faisal/DukeImg/Duke256.png”);
ActionListener exitListener=新ActionListener(){
已执行的公共无效操作(操作事件e){
System.out.println(“退出…”);
系统出口(0);
}
};
PopupMenu popup=新建PopupMenu();
MenuItem defaultItem=新MenuItem(“退出”);
defaultItem.addActionListener(exitListener);
弹出.添加(默认项);
defaultItem=新菜单项(“打开”);
defaultItem.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
setVisible(真);
setExtendedState(JFrame.NORMAL);
}
});
弹出.添加(默认项);
trayIcon=新trayIcon(图像,“系统托盘演示”,弹出窗口);
trayIcon.setImageAutoSize(真);
}否则{
System.out.println(“不支持系统托盘”);
}
AddWindowsStateListener(新建WindowsStateListener(){
公共无效WindowsStateChanged(WindowEvent e){
如果(如getNewState()==图标化){
试一试{
托盘。添加(trayIcon);
setVisible(假);
System.out.println(“添加到系统托盘”);
}捕获(AWEX){
System.out.println(“无法添加到托盘”);
}
}
如果(如getNewState()==7){
试一试{
托盘。添加(trayIcon);
setVisible(假);
System.out.println(“添加到系统托盘”);
}捕获(AWEX){
System.out.println(“无法添加到系统托盘”);
}
}
如果(e.getNewState()==最大化\u二者){
托盘。移除(trayIcon);
setVisible(真);
System.out.println(“删除托盘图标”);
}
如果(如getNewState()==正常){
托盘。移除(trayIcon);
setVisible(真);
System.out.println(“删除托盘图标”);
}
}
});
setIconImage(Toolkit.getDefaultToolkit().getImage(“Duke256.png”);
setVisible(真);
设置大小(300200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
公共静态void main(字符串[]args){
新的HideToSystemTray();
}
}