24

我试过这种方式,但它没有改变?

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

12 回答 12

44

最好使用 .png 文件;.ico 是特定于 Windows 的。最好不要使用文件,而是使用类资源(可以打包在应用程序的 jar 中)。

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

尽管您甚至可能会考虑将 setIconImages 用于多种尺寸的图标。

于 2013-03-27T11:24:37.450 回答
7

尝试将图像放在 src 文件夹之外的单独文件夹中。然后,使用 ImageIO 加载您的图像。它应该如下所示:

frame.setIconImage(ImageIO.read(new File("res/icon.png")));
于 2013-08-27T00:18:32.507 回答
4

最后我发现了设置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。

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

于 2013-10-27T20:12:58.550 回答
2

这对我有用。

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

对于导出的 jar 文件,您需要配置构建路径以包含 res 文件夹并使用以下代码。

    URL url = Main.class.getResource("/icon.png");
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(url));
于 2017-11-08T18:13:54.127 回答
1

Yon可以尝试以下方式,

myFrame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
于 2014-09-04T06:42:10.127 回答
1

这是我用来设置图标的代码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();
  }
于 2015-11-26T07:02:55.837 回答
0

我使用Maven并拥有项目的结构,它是通过输入命令创建的:

mvn archetype:generate

所需的文件icon.png必须放在src/main/resources您的 maven 项目的文件夹中。

然后你可以在你的项目中使用下一行:

ImageIcon img = new ImageIcon(getClass().getClassLoader().getResource("./icon.png"));
setIconImage(img.getImage());
于 2019-06-20T23:18:47.567 回答
0

我的项目代码如下:

private void setIcon() {
       setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/slip/images/cage_settings.png")));

    }
于 2020-02-10T11:26:24.257 回答
0

我正在使用以下实用程序类来设置JFrameJDialog实例的图标:

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必须位于。myproject\src\main\resourcesMaven

于 2016-11-07T13:41:45.533 回答
0
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);
    }
}'

这对我有用。

于 2017-04-19T06:57:46.130 回答
0

只需在您的代码中复制这几行代码并将“imgURL”替换为图像(您想设置为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());
于 2016-10-22T09:49:30.617 回答
-1
frame.setIconImage(new ImageIcon(URL).getImage());

/* 框架是 JFrame 的 setIcon 方法,在你的框架上设置一个新图标 new ImageIcon 创建一个新的类实例(这样你就可以从你提供的 url 中获取一个新图标)最后 getImage 返回你需要的图标它是一个“快速”制作图标的方式,对我来说这很有帮助,因为它是一行代码 */

于 2014-04-21T20:11:08.447 回答