【问题标题】:Using an icon image for a GUI为 GUI 使用图标图像
【发布时间】:2015-06-13 16:05:02
【问题描述】:

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

【问题讨论】:

  • 不确定 java 是否可以读取“.ico”文件。尝试使用 .jpg 或 .gif 图片。
  • 您确定您的 ImageIcon 已完全初始化(路径错误?)@camickr 你是对的,请参阅stackoverflow.com/questions/12185768/…
  • 这并不能解决你的问题,但可以考虑使用setIconImages,它允许定义不同分辨率的图像
  • 让我知道文件是资源文件还是在项目外的文件夹中?此外,我认为您使用的文件必须小于“32 * 32”..
  • @crAlexander “我认为你使用的文件必须小于“32*32”。” Think again。某些 Windows 机器上的图标大小至少达到 40x40。

标签: java image swing icons


【解决方案1】:

这里有两个可能的问题:

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

    对于任何特定 JRE 支持的所有类型,请使用 ImageIO.getReaderFileSuffixes()(但说真的,对于应用程序图标,请务必使用 3 种类型,保证支持)。
  2. 代码正试图将应用程序资源作为文件加载,此时它可能是(或变为)应通过 URL 访问的。请参阅embedded resource info. page,了解有关如何形成 URL 的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多