Java 如何设置JFrame窗口和托盘的图标

Java 如何设置JFrame窗口和托盘的图标,java,swing,Java,Swing,我想在窗口中显示我自己的图标,而不是Java cup 当最小化时,我想显示我自己的图像。我怎样才能做到这一点 我应该将图像相对于源文件放置在哪里 [更新] 我试过了,但没有成功 TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().createImage("image/accounting.gif")); //setIconImage(); SystemTray tray = SystemTray.

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

当最小化时,我想显示我自己的图像。我怎样才能做到这一点

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

[更新]

我试过了,但没有成功

    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(
),即使是对象也不知道导入什么


关于,

使用

使用

关于您的
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
    }
}

关于您的
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
    }
}

使用setIconImage()的示例:(同样适用于setIconImage())

publicmyframe(){
initComponents();//由Netbeans添加
列表图标=新的ArrayList();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/16/app.png”)).getImage();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/32/app.png”)).getImage();
此.setIconImages(图标);
}

线索在于使用“getImage()”以返回图像(因为图像图标不能直接用于setIconImages())。

使用setIconImages()的示例:(同样适用于setIconImage())

publicmyframe(){
initComponents();//由Netbeans添加
列表图标=新的ArrayList();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/16/app.png”)).getImage();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/32/app.png”)).getImage();
此.setIconImages(图标);
}

线索是使用“getImage()”返回图像(因为ImageIcon不能直接在setIconImages()中使用)。

我没有写过关于托盘图标的内容,但最后我发现设置jframe图标的主要问题。这是我的代码。它与其他代码类似,但这里有几点需要注意

    this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage());
1) 将此代码放入jframe WindowOpen事件中

2) 将图像放在主文件夹中,在主文件夹中创建所有表单和java文件,例如

src\ myproject\ myFrame.form
src\ myproject\ myFrame.java
src\ myproject\ OtherFrame.form
src\ myproject\ OtherFrame.java
src\ myproject\ Icon.png
3) 最重要的是,文件名区分大小写,即icon.png不起作用,但icon.png起作用


这样,即使在最终构建项目之后,您的图标也会出现。

我还没有写过关于托盘图标的内容,但最终我发现了设置jframe图标的主要问题。这是我的密码。它与其他代码类似,但这里有一些事情需要注意的游戏

    this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage());
1) 将此代码放入jframe WindowOpen事件中

2) 将图像放在主文件夹中,在主文件夹中创建所有表单和java文件,例如

src\ myproject\ myFrame.form
src\ myproject\ myFrame.java
src\ myproject\ OtherFrame.form
src\ myproject\ OtherFrame.java
src\ myproject\ Icon.png
3) 最重要的是,文件名区分大小写,即icon.png不起作用,但icon.png起作用


这样,即使在最终构建项目后,您的图标也会出现。

请提供一个托盘图标的示例。习惯阅读API文档,它包含所有必要的信息。现在我不知道为
TrayIcon
导入什么,请您提供一个带有托盘图标的示例。习惯于阅读API文档,它包含所有必要的信息。现在我不知道为
TrayIcon
导入什么