使用图标图像作为GUI

时间:2015-04-08 15:32:34

标签: java image swing icons

我为学校项目创建了以下代码,一个“密码保护器”,只是为了好玩,真的。但是,我遇到的问题是图标图像没有出现,而是默认的java“咖啡杯”。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class UserInterfaceGUI extends JFrame
{
    private static final long serialVersionUID = 1;
    private JLabel userNameInfo; // ... more unimportant vars.

    public UserInterfaceGUI()
    {
        this.setLayout(new FlowLayout());
        userNameInfo = new JLabel("Enter Username:"); // ... more unimportant var. declartions

        this.add(userNameInfo); // ... more unimportant ".add"s

        event e = new event();
        submit.addActionListener(e);
    }

    public static void main(String[] args)
    {
        //This icon has a problem \/
        ImageIcon img = new ImageIcon("[File Location hidden for privacy]/icon.ico");

        UserInterfaceGUI gui = new UserInterfaceGUI();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(400, 140);
        gui.setIconImage(img.getImage());
        gui.setTitle("Password Protector");
        gui.setVisible(true);
    }
}

有人可以告诉我为什么这只会在屏幕底部和窗口顶部的栏上显示java咖啡杯吗?

1 个答案:

答案 0 :(得分:3)

这里有两个可能的问题:

  1. Java不太可能支持.ico文件。唯一可以依赖的类型是GIF,PNG& JPEG。

    对于任何特定JRE支持的所有类型,请使用ImageIO.getReaderFileSuffixes()(但严重的是,对于有保证支持的3种类型的应用程序图标)。
  2. 代码正在尝试将应用程序资源作为文件加载,当它可能(或成为)应由URL访问的时。有关如何形成网址的提示,请参阅embedded resource info. page