您好,我可以将TrayIcon添加到SystemTray中,并可以删除相同的表单SystemTray。
如何删除现有的TrayIcon。我无法将对象获取到available TrayIcons来执行此操作。
下面是我添加和删除TrayIcon的代码
TrayIcon trayIcon = new TrayIcon(icon);
SystemTray tray = SystemTray.getSystemTray();
PopupMenu popup = new PopupMenu();
MenuItem exit = new MenuItem("Exit");
popup.add(exit);
trayIcon.setToolTip("My TrayIcon");
trayIcon.setPopupMenu(popup);
tray.add(trayIcon);
trayIcon.displayMessage("Testing",
"Information" ,
TrayIcon.MessageType.INFO );
tray.remove(trayIcon);发布于 2018-05-04 16:39:47
SystemTray tray = SystemTray.getSystemTray();
try {
boolean exist = false;
for(TrayIcon icon : tray.getTrayIcons() ){
if(icon.getImage().equals(trayIcon.getImage()) && icon.getToolTip().equals(trayIcon.getToolTip())){
exist = true;
break;
}
}
if(exist){
tray.remove(trayIcon);
}发布于 2014-02-07 17:30:37
您必须将其从SystemTray中删除。
系统托盘包含一个或多个使用add(java.awt.TrayIcon)方法添加到托盘的托盘图标。当不再需要它们时,可以使用remove(java.awt.TrayIcon)方法将其删除。
在"How to Use the System Tray",tutorial“中,您将找到答案
发布于 2021-06-15 16:06:29
这是移除图标的正确方法,就像你对做的那样
SystemTray tray = SystemTray.getSystemTray();
tray.remove(trayIcon);但是,如果您从Eclipse运行应用程序,而不是处理程序窗口,您只需像“硬停止”一样停止运行,因此图标将保留在try图标中,直到您将鼠标悬停以使其消失。
原因是- Windows不会监控你的程序是否仍在运行,你应该在停止应用程序之前小心关闭你的资源。
在关闭程序时,尝试以某种方式运行方法closeProgram()。
public void closeProgram()
{
tray.remove(trayIcon);
System.exit(0);
}在我的例子中,我有一些JFrame窗口,所以我添加了窗口侦听器来执行此操作
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
closeProgram();
}
});如果您使用批处理文件运行程序,我认为您将无法控制它,也许更好的做法是隐藏批处理控制台,并显示显示日志打印的简单JFrame,但好处是它将有"X“按钮来关闭程序。
https://stackoverflow.com/questions/21623872
复制相似问题