java - 如何为JFrame窗口和托盘设置图标

标签 java swing

我想在窗口中显示我自己的图标而不是 Java 杯。

screenshot of JFrame

同样,当最小化时,我想显示我自己的图像。我将如何做到这一点?

我应该将图像相对于源文件放置在哪里?

[更新]

我试过了,但没有成功

    TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().createImage("image/accounting.gif"));

    //setIconImage();

    SystemTray tray = SystemTray.getSystemTray();

    try {
        tray.add(trayIcon);
    } catch (AWTException e) {
        System.out.println("TrayIcon could not be added.");
    }

我也试过了

TrayIcon trayIcon = new TrayIcon(createImage("images/bulb.gif", "tray icon"));

但是严重怀疑createImage(,即使是Object也不知道导入什么。

问候,

最佳答案

关于您的TrayIcon问题,您可以引用以下解决方案:

public static void createSystemTrayIcon() {

    if (SystemTray.isSupported()) {
        SystemTray tray = SystemTray.getSystemTray();
        Image image = Toolkit.getDefaultToolkit().getImage(
            System.getenv("MY_PROGRAM_HOME") + "game.ico"
        );

        PopupMenu popup = new PopupMenu();

        final MenuItem menuExit = new MenuItem("Quit");

        MouseListener mouseListener =
            new MouseListener() {
                public void mouseClicked(MouseEvent e) {}
                public void mouseEntered(MouseEvent e) {}
                public void mouseExited(MouseEvent e) {}
                public void mousePressed(MouseEvent e) {}
                public void mouseReleased(MouseEvent e) {}
        };

        ActionListener exitListener =
            new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Runtime r = Runtime.getRuntime();
                    System.out.println("Exiting...");
                    r.exit(0);
                }
            };

        menuExit.addActionListener(exitListener);
        popup.add(menuExit);

        final TrayIcon trayIcon = new TrayIcon(image, "My program", popup);

        ActionListener actionListener =
            new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    trayIcon.displayMessage(
                        "My program ",
                        "version: blahblah",
                        TrayIcon.MessageType.INFO
                    );
            }
        };

        trayIcon.setImageAutoSize(true);
        trayIcon.addActionListener(actionListener);
        trayIcon.addMouseListener(mouseListener);

        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.err.println("TrayIcon could not be added.");
        }

    } else {
        //  System Tray is not supported
    }
}

关于java - 如何为JFrame窗口和托盘设置图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5349642/

相关文章:

java - 对过程计时时结果不一致

java - 能够安装亚马逊应用程序但无法打开它

java - 如何相对于另一个组件布局组件?

java - Haxe Java 窗口

java - Java 中的管道 (|) 运算符

java - 确保对新的 Subversion 提交的覆盖率最小

java - 以动态方式在 JScrollPane 上插入面板

java - 如何编写启动画面?

java - 为固定宽度的长句调整对话框消息 (JOptionPane) 的大小

java - 在 Java 中使用可变参数重载方法