Как установить значок в JFrame

Я пробовал этот путь, но он не изменился?

ImageIcon icon = new ImageIcon("C:\\Documents and Settings\\Desktop\\favicon(1).ico");
frame.setIconImage(icon.getImage());

Ответ 1

Лучше использовать файл .png;.ico - это Windows. И лучше не использовать файл, а ресурс класса (может быть упакован в банку приложения).

URL iconURL = getClass().getResource("/some/package/favicon.png");
// iconURL is null when not found
ImageIcon icon = new ImageIcon(iconURL);
frame.setIconImage(icon.getImage());

Хотя вы даже можете подумать об использовании setIconImages для значка в нескольких размерах.

Ответ 2

Попробуйте помещать изображения в отдельную папку вне вашей папки src. Затем используйте ImageIO для загрузки изображений. Он должен выглядеть следующим образом:

frame.setIconImage(ImageIO.read(new File("res/icon.png")));

Ответ 3

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

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

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

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.

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

Ответ 4

Это работает для меня.

    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(".\\res\\icon.png"));

Для файла экспорта jar вам необходимо настроить путь сборки для включения папки res и использовать следующие коды.

    URL url = Main.class.getResource("/icon.png");
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(url));

Ответ 5

Вот код, который я использую для установки значка a JFrame

import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

  try{ 
    setIconImage(ImageIO.read(new File("res/images/icons/appIcon_Black.png")));
  } 
  catch (IOException e){
    e.printStackTrace();
  }

Ответ 6

Yon может попробовать следующий путь,

myFrame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));

Ответ 7

Просто скопируйте эти несколько строк кода в свой код и замените "imgURL" на Image (вы хотите установить как jframe значок).

JFrame.setDefaultLookAndFeelDecorated(true);

//Create the frame.
JFrame frame = new JFrame("A window");

//Set the frame icon to an image loaded from a file.
frame.setIconImage(new ImageIcon(imgURL).getImage());

Ответ 8

Я использую следующий класс утилиты, чтобы установить значок JFrame и JDialog экземпляры:

import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.Scanner;

public class WindowUtilities
{
    public static void setIconImage(Window window)
    {
        window.setIconImage(Toolkit.getDefaultToolkit().getImage(WindowUtilities.class.getResource("/Icon.jpg")));
    }

    public static String resourceToString(String filePath) throws IOException, URISyntaxException
    {
        InputStream inputStream = WindowUtilities.class.getClassLoader().getResourceAsStream(filePath);
        return toString(inputStream);
    }

    // http://stackoverflow.com/a/5445161/3764804
    private static String toString(InputStream inputStream)
    {
        try (Scanner scanner = new Scanner(inputStream, "UTF-8").useDelimiter("\\A"))
        {
            return scanner.hasNext() ? scanner.next() : "";
        }
    }
}

Таким образом, использование этого становится таким же простым, как вызов

WindowUtilities.setIconImage(this);

где-то внутри вашего класса, расширяющего JFrame.

Icon.jpg Icon.jpg должен располагаться в myproject\src\main\resources при использовании Maven, например.

Ответ 9

public FaceDetection() {
    initComponents();
    //Adding Frame Icon
    try {
        this.setIconImage(ImageIO.read(new File("WASP.png")));
    } catch (IOException ex) {
        Logger.getLogger(FaceDetection.class.getName()).log(Level.SEVERE, null, ex);
    }
}'

это работает для меня.

Ответ 10

Я использую Maven и имею структуру проекта, которая была создана путем ввода команды:

mvn archetype:generate

Требуемый файл icon.png должен быть помещен в папку src/main/resources вашего проекта maven.

Затем вы можете использовать следующие строки внутри вашего проекта:

ImageIcon img = new ImageIcon(getClass().getClassLoader().getResource("./icon.png"));
setIconImage(img.getImage());

Ответ 11

frame.setIconImage(new ImageIcon(URL).getImage());

/* рамка - JFrame setIcon, установите новый значок в вашем кадре новый ImageIcon создаст новый экземпляр класса (чтобы вы могли получить новый значок из URL-адреса, который вы даете) наконец getImage возвращает нужный значок  это "быстрый" способ сделать значок, для меня это полезно, потому что это одна строка кода */