как установить иконку для окна JFrame и трея - PullRequest
1 голос
/ 18 марта 2011

Я бы хотел показать свою иконку вместо кубка 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(, и даже если это Объект, не знаю, что импортировать.

С уважением,

Ответы [ 4 ]

2 голосов
/ 18 марта 2011

Что касается вашей 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
    }
}
2 голосов
/ 18 марта 2011

Использование JFrame.setIconImage()

1 голос
/ 28 октября 2013

Я не писал о значке в трее, но, наконец, я нашел основную проблему в настройке значка jframe.Вот мой кодЭто похоже на другие коды, но вот несколько вещей, которые нужно учитывать при игре.

    this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage());

1) Поместите этот код в событие jframe WindowOpened

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.

таким образом, ваш значок будет там даже после окончательной сборки вашего проекта.

1 голос
/ 01 декабря 2011

Пример использования setIconImages (): (то же самое относится и к setIconImage ())

public MyFrame() {
    initComponents(); //Added by Netbeans
    List<Image> icons  = new ArrayList();
    icons.add(new ImageIcon(getClass().getResource("/com/example/icons/16/app.png")).getImage());
    icons.add(new ImageIcon(getClass().getResource("/com/example/icons/32/app.png")).getImage());
    this.setIconImages(icons);
}

Подсказка заключается в использовании getImage () для возврата изображения (поскольку ImageIcon нельзя использовать непосредственно в setIconImages ()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...