2013-03-27 37 views
12

我试过这种方式,但它没有改变?如何设置图标为JFrame

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

在文件路径中似乎存在一些问题。如果未在指定路径中找到图像,将设置默认图像图标。 – prasanth 2013-03-27 11:24:11

回答

24

更好地使用.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作为几种尺寸的图标。

+0

即使图像路径是正确的,我也会收到空指针异常 – vijay 2013-03-27 12:48:05

+0

延迟响应:图标应与您调用getClass()的类位于同一个jar中,并且路径使用'/' 。 – 2013-04-16 13:09:59

4

尝试将您的图像放在src文件夹以外的单独文件夹中。然后,使用ImageIO加载您的图像。它应该看起来像这样:

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

上面的答案不适用于我,但这是有效的! – trinity420 2016-07-05 19:25:03

3

最后,我发现设置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
frame.setIconImage(new ImageIcon(URL).getImage()); 

/* 框架的JFrame 的setIcon方法,在你的框架 新的ImageIcon设置一个新的图标使类的一个新实例的(所以你可以从你给的网址一个新的图标) 最后的getImage返回你需要 这是一个“快”的方式,使一个图标,该图标对我来说是有帮助的,因为它的代码 */

+1

请为您的代码添加一些说明,具体说明它的作用,以及它如何解决问题。 – 2014-04-21 20:37:30

0

勇可以试试下面的方法,

myFrame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png")); 
一行
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(); 
    } 
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()); 
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

例如,当使用Maven时,Icon.jpg必须位于myproject\src\main\resources中。

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); 
    } 
}' 

这对我有用。

1

这适用于我。

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

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

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