Java 将图标/图像添加到文本旁边,作为弹出菜单中菜单项的一部分
我正在为我的系统托盘创建一个小程序,其中提供一些信息,并在文本旁边的弹出菜单中显示一个图标。我尝试使用JMenuItem添加图标,但无法将其添加到弹出菜单中。如果我使用菜单项,也不能添加图标 以下是我目前的代码:Java 将图标/图像添加到文本旁边,作为弹出菜单中菜单项的一部分,java,awt,system-tray,Java,Awt,System Tray,我正在为我的系统托盘创建一个小程序,其中提供一些信息,并在文本旁边的弹出菜单中显示一个图标。我尝试使用JMenuItem添加图标,但无法将其添加到弹出菜单中。如果我使用菜单项,也不能添加图标 以下是我目前的代码: import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; //...... public class Inte
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//......
public class Interface
{
public static void mainInterface()
{
if(!SystemTray.isSupported())
{
System.out.println("System tray not supported! This program can only be used on Windows.");
return ;
}
SystemTray systemTray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("src/icon.png");
PopupMenu trayPopupMenu = new PopupMenu();
MenuItem close = new MenuItem("Close");
MenuItem CMItem = new MenuItem("test1", new ImageIcon("src/greenIcon.png"));
MenuItem HerItem = new MenuItem("test2", new ImageIcon("src/greenIcon.png"));
close.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
trayPopupMenu.add(close);
trayPopupMenu.add(CMItem);
trayPopupMenu.add(HerItem);
TrayIcon trayIcon = new TrayIcon(image, "Status", trayPopupMenu);
trayIcon.setImageAutoSize(true);
try
{
systemTray.add(trayIcon);
}catch(AWTException awtException)
{
awtException.printStackTrace();
}
System.out.println("end of main");
}
}
由于menuItem对象中的图标部分,上述代码将不会运行。有人能帮我把图标放在菜单文本旁边吗
编辑:
根据
MenuItem
的文档,MenuItem
没有可以获取图标的构造函数(这也是堆栈跟踪所说的),也不支持任何添加图标的方法。简而言之,MenuItem
无法获取图标
您提到尝试使用javax.swing的
JMenuItem
,但正如您所发现的,JMenuItem
将需要jpopmenu
,而TrayIcon
不支持这一点。因为Swing没有任何JTrayIcon
或其他类似的TrayIcon
对应物,我不相信你想做的是不可能的。你能编辑你的问题并添加你得到的堆栈跟踪吗?
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor MenuItem(String, ImageIcon) is undefined
The constructor MenuItem(String, ImageIcon) is undefined
at minecraft.status.checker.Interface.mainInterface(Interface.java:23)
at minecraft.status.checker.MainClass.main(MainClass.java:12)