Как изменить значок java в JFrame

хорошо, поэтому я немного изучил это. Я довольно новичок в java, но думал, что это будет легко. Я пробовал почти каждый способ, на который был дан ответ на этом сайте, и все еще не повезло, и обычно, когда я смотрю здесь, я могу найти ответ, который соответствует тому, что я ищу. Кто-нибудь знает, как изменить значок Java в верхнем углу JFrame. Я уверен, что это не мой путь к файлу, потому что все мои изображения находятся в одной папке, и все они работают, это единственное, что я не могу сделать.

Это первая часть моего кода для главного меню моей программы, все работает, за исключением, когда я пытаюсь добавить значок изображения. Код, который я ввел ниже, ничего не имеет для IconImage JFrame, я удалил его, так как он не работал. Поэтому, если есть кто-то, кто знает, как заставить его работать с этим кодом, который был бы высоко оценен, большое спасибо!

public class MainFrame
{
private MyPanel main;
private MyPanel2 create;
private MyPanel3 update;
private MyPanel4 find;
JFrame frame = new JFrame("Main Menu:");

public void displayGUI()
{
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel contentPane = new JPanel();
    contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
    contentPane.setLayout(new CardLayout());
    main = new MyPanel(contentPane, this);
    create = new MyPanel2(contentPane);
    update = new MyPanel3(contentPane);
    find = new MyPanel4(contentPane);
    contentPane.add(main, "Main Menu");
    contentPane.add(create, "Create Part");
    contentPane.add(update, "Update Part");
    contentPane.add(find, "Find Part");
    frame.setLocation(200, 200);
    frame.setSize(700, 580);
    frame.setContentPane(contentPane);

    frame.setVisible(true);

}

5 ответов


у меня есть ответ для вас. Во-первых, убедитесь, что изображения находятся в папке, а не в пакете. Затем вставьте эту строку кода:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/image.png"));
ImageIcon icon = new ImageIcon( );
setIconImage(icon.getImage());

этот код получает изображение из пути к классу и возвращает его как значок изображения, а затем устанавливает его. Это должно добавить значок изображения в приложение. Если нет, тогда скажи мне.

EDIT: после того, как вы сказали мне, что это не сработало, я решил сделать вторую попытку... Во-первых, поместите свои изображения в совершенно отдельный папка. Я обычно называю это / res. Затем поместите туда свое изображение. Теперь для погрузки я выбрал совершенно другой маршрут. Я решил использовать ImageIO вместо загрузки по умолчанию. Чтобы загрузить изображение, вы используете этот код:

try {
    frame.setIconImage(ImageIO.read(new File("res/icon.png")));
}
catch (IOException exc) {
    exc.printStackTrace();
}

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

Если вы хотите экспортировать это как банку, то поместите папку с тем же именем, которое вы использовали в программе в том же каталоге, что и JAR.


например, в проекте NetBeans создайте папку ресурсов в папке src.

Поместите свои изображения (jpg, ...) туда.

если вы используете ImageIO или Toolkit (включая getResource), вы должны включить ведущий / в свой путь к файлу изображения:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/agfa_icon.jpg"));
setIconImage(image);

если этот код находится внутри JFrame класс, изображение добавляется в кадр в виде значка в строке заголовка.


это работает довольно хорошо для меня. Просто добавьте это после того, как вы создали свой JFrame.

try {
   Image image = new ImageIcon("/icons/image.jpg").getImage();
   frame.setIconImage(image);
}catch(Exception e){
   System.out.println("Application icon not found");
}

  1. вставьте значок изображения (fav.png) в том же пакете сначала,
  2. пишем следующий код в конструктор of JFrame:

setIconImage (Toolkit.getDefaultToolkit().getImage (getClass ().getResource ("fav.png")));

Примечание:fav.формат PNG это имя значка


this.setIconImage(new ImageIcon(getClass().getResource("/iconsfolder/iconsname.jpg")).getImage()); 
          // sets the Global icon for the system

попробуйте этот код поставить после этот код:

public void displayGUI()
{