10

好的,所以我一直在研究这个安静一点。我对java相当陌生,但认为这很容易。我已经尝试了几乎所有已在此站点上回答的方法,但仍然没有运气,通常当我在这里查看时,我能够找到适合我正在寻找的答案。有谁知道如何更改 JFrame 上角的 Java 图标。我很肯定它不是我的文件路径,因为我所有的图像都在同一个文件夹中并且它们都可以工作,这是我似乎无法开始工作的唯一一个。

这是我的程序主菜单代码的第一部分,除了我尝试添加图标图像外,一切正常。我在下面输入的代码中没有 JFrame IconImage 的任何内容,我删除了它,因为它不起作用。因此,如果有人知道如何使用此代码,将不胜感激,非常感谢您!

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

}
4

5 回答 5

15

我有一个答案给你。首先,确保图像位于文件夹中,而不是包中。接下来,插入这行代码:

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

此代码从类路径中获取图像,并将其作为图像图标返回,然后设置它。这应该将图像图标添加到应用程序。如果没有,那就告诉我。

编辑:在你告诉我这不起作用之后,我决定再试一次......首先,将你的图像放入一个完全独立的文件夹中。我通常称之为/res。接下来,将您的图像放在那里。现在,为了加载,我采取了完全不同的路线。我决定使用 ImageIO 而不是默认加载。要加载图像,请使用以下代码:

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

ImageIO加载图像效果更好。如果这仍然不起作用,请告诉我。

如果要将其导出为 JAR,则将与您在程序中使用的名称相同的文件夹放在与 JAR 相同的目录中。

于 2013-08-13T11:15:09.890 回答
3

例如,在 NetBeans 项目中,在 src 文件夹中创建一个资源文件夹。

将您的图像(jpg,...)放在那里。

无论您使用ImageIO还是Toolkit(包括 getResource),都必须在图像文件的路径中包含前导 /:

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

如果此代码在您的JFrame类中,则图像将作为标题栏中的图标添加到框架中。

于 2014-03-05T08:59:14.960 回答
2

这对我来说很好。只需在创建JFrame后添加它。

try {
   Image image = new ImageIcon("/icons/image.jpg").getImage();
   frame.setIconImage(image);
}catch(Exception e){
   System.out.println("Application icon not found");
}
于 2015-07-14T09:16:31.640 回答
1
  1. 首先将您的图像图标(fav.png)粘贴到同一个包中,
  2. 在JFrame的构造函数中编写以下代码:

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

注意:- fav.png是图标的名称

于 2017-08-29T04:50:24.813 回答
0
this.setIconImage(new ImageIcon(getClass().getResource("/iconsfolder/iconsname.jpg")).getImage()); 
          // sets the Global icon for the system

尝试将此代码放在此代码之后:

public void displayGUI()
{
于 2017-08-29T04:56:14.427 回答