【问题标题】:Does swing support *.ico files?swing 支持 *.ico 文件吗?
【发布时间】:2012-08-24 12:37:05
【问题描述】:

为挥杆动作设置图像:

Action action = ...
// ImageIcon icon = new ImageIcon(getClass().getResource("/icon.ico"));
ImageIcon icon = new ImageIcon(getClass().getResource("/icon_16x16.png"));
action.putValue(Action.SMALL_ICON, icon);

*.ico 文件不会被渲染,只有 png/jpg。
这是设计使然吗?

【问题讨论】:

    标签: java image swing icons


    【解决方案1】:

    本机,没有。

    不过,您可能想看看image4j,它为他们提供了出色的支持(恕我直言)

    【讨论】:

    • 很难过。 ico 文件允许您使用不同的、更适合不同分辨率的图像。
    • @TomášZato 可能,但 Windows 和 MacOS 都有自己的图标格式:P。还有一些库允许您使用 SVG a(矢量)图像,但您需要四处挖掘才能找到这些
    【解决方案2】:

    支持的类型可能会因制造商和版本而异,但您通常可以依靠 PNG、JPG 和 GIF。

    import javax.imageio.ImageIO;
    
    public class QuickTest {
    
        public static void main(String[] args) throws Exception {
            String[] types = ImageIO.getReaderFileSuffixes();
            System.out.println("This JRE supports image types:");
            for (String type : types) {
                System.out.println("Type: " + type);
            }
        }
    }
    

    在这里/现在输出

    This JRE supports image types:
    Type: bmp
    Type: jpg
    Type: wbmp
    Type: jpeg
    Type: png
    Type: gif
    

    【讨论】:

    • 我刚刚用 Oracle Java 8u74 运行了这个测试,它仍然只支持这 6 种格式。
    • @RANders00 J2SE 中对图像类型的支持不是很好,请注意它在另一个操作系统上可能会有所不同(所以不要假定该集合是“给定的”)。 OTOH 将 JAI 添加到运行时类路径中,该列表不仅应该更长,而且在整个操作系统中也应该更加一致。
    猜你喜欢
    • 2015-04-13
    • 2021-05-08
    • 1970-01-01
    • 2015-09-14
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多