Добавьте значок / изображение рядом с текстом как часть элемента меню в PopupMenu

Я создаю небольшую программу для моего системного трея, в которой она дает некоторую информацию и отображает значок во всплывающем меню рядом с текстом. Я пытался добавить значок с помощью JMenuItem, но затем я не могу добавить его PopupMenu. Также, если я использую пункт меню, я не могу добавить значок.

Вот мой код до сих пор:

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. Может кто-нибудь помочь мне поставить значок рядом с текстом в меню?

Редактировать:

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)

1 ответ

Согласно документации MenuItem здесь, MenuItem не имеет конструктора, который может принимать значок (это то, что говорит и ваша трассировка стека), а также не поддерживает никаких методов для добавления каких-либо иконок. Короче, MenuItem не могу взять иконку.

Вы упомянули, что пытались использовать javax.swing JMenuItemно, как вы обнаружили, JMenuItem потребует JPopupMenu, который не поддерживается TrayIcon, Потому что нет JTrayIcon или другой аналог TrayIcon для Swing, я не верю, что возможно сделать то, что вы пытаетесь.

Другие вопросы по тегам