需要帮助批量添加文件路径名称为00的图像(Java)

时间:2015-08-03 00:24:48

标签: java image jbutton

我无法批量添加图像到JButton网格。我正在尝试使用for循环,其变量用于字符串名称。

图像的名称如下:

32PX-Shuffle001.png

32PX-Shuffle821.png

这是我尝试在图像中添加的代码部分。第三个setIcon工作,但前两个没有。我很困惑为什么会这样。

此外,图像文件不是连续的数字。例如,我有001,002,003,004,005,但不是007,008,然后是009,010。我正试图找出一种方法让它跳到下一张可用的图像。

总体而言,此代码适用于匹配3拼图解算器,这是一个选择网格,用于放置拼图网格上的图标,因此我需要能够调用与按钮ID关联的正确图像。

            for (int i = 0; i < 1000; i++) {
            JButton selectionClicky = new JButton();
            if (i < 10) {
                selectionClicky.setIcon(new ImageIcon("src/img/32px-Shuffle" + "00"
                        + i + ".png"));
            }
            if (i < 100){
                selectionClicky.setIcon(new ImageIcon("src/img/32px-Shuffle"+ "0"
                        + i + ".png"));
            }
            if (i < 1000){
                selectionClicky.setIcon(new ImageIcon("src/img/32px-Shuffle"
                        + i + ".png"));
            }
            selectionClicky.setFocusable(false);
            selectionMainPanel.add(selectionClicky);
            selectionButtonList.add(selectionClicky);
        }

1 个答案:

答案 0 :(得分:2)

不要在任何路径引用中使用src,这表明事情会出错,而是根据您的要求使用Class#getResourceClass#getResourceAsStream。< / p>

基本上,一般的想法是在尝试加载资源之前测试资源是否确实存在,例如......

String path = String.format("/img/32px-Shuffle%03d", i);
URL resource = getClass().getResource(path);
if (resource != null) {
    BufferedImage img = ImageIO.read(resource);
    selectionClicky.setIcon(new ImageIcon(img));
}

通常情况下,ImageIO比使用ImageIcon更受欢迎,主要是因为ImageIO因某种原因而无法加载图片时会引发IOException(而非静默失败)并且在图像完全加载之前不会返回

有关ImageIO

的详细信息,请参阅Reading/Loading an Image