gpt4 book ai didi

java - 在java中添加和删除trayicon?

转载 作者:行者123 更新时间:2023-12-01 14:12:03 24 4
gpt4 key购买 nike

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

线程“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.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.UIManager;

/**
*
* @author Mohammad Faisal
* ermohammadfaisal.blogspot.com
* facebook.com/m.faisal6621
*
*/

public class HideToSystemTray extends JFrame{
TrayIcon trayIcon;
SystemTray tray;
HideToSystemTray(){
super("SystemTray test");
System.out.println("creating instance");
try{
System.out.println("setting look and feel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
System.out.println("Unable to set LookAndFeel");
}
if(SystemTray.isSupported()){
System.out.println("system tray supported");
tray=SystemTray.getSystemTray();

Image image=Toolkit.getDefaultToolkit().getImage("/media/faisal/DukeImg/Duke256.png");
ActionListener exitListener=new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exiting....");
System.exit(0);
}
};
PopupMenu popup=new PopupMenu();
MenuItem defaultItem=new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
defaultItem=new MenuItem("Open");
defaultItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(true);
setExtendedState(JFrame.NORMAL);
}
});
popup.add(defaultItem);
trayIcon=new TrayIcon(image, "SystemTray Demo", popup);
trayIcon.setImageAutoSize(true);
}else{
System.out.println("system tray not supported");
}
addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if(e.getNewState()==ICONIFIED){
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
}
if(e.getNewState()==7){
try{
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
}catch(AWTException ex){
System.out.println("unable to add to system tray");
}
}
if(e.getNewState()==MAXIMIZED_BOTH){
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
if(e.getNewState()==NORMAL){
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
}
});
setIconImage(Toolkit.getDefaultToolkit().getImage("Duke256.png"));

setVisible(true);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new HideToSystemTray();
}
}

关于java - 在java中添加和删除trayicon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com