Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 将图标/图像添加到文本旁边,作为弹出菜单中菜单项的一部分_Java_Awt_System Tray - Fatal编程技术网

Java 将图标/图像添加到文本旁边,作为弹出菜单中菜单项的一部分

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

我正在为我的系统托盘创建一个小程序,其中提供一些信息,并在文本旁边的弹出菜单中显示一个图标。我尝试使用JMenuItem添加图标,但无法将其添加到弹出菜单中。如果我使用菜单项,也不能添加图标

以下是我目前的代码:

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)