需要帮助批量添加文件路径名称中包含 00 的图像 (Java)
Need help batch adding images with 00 in name of filepath (Java)
我在将图像批量添加到 JButton 网格时遇到问题。我正在尝试使用 for 循环,字符串名称中使用了变量。
图片名称如下:
32px-Shuffle001.png
32px-Shuffle821.png
等等
这是我尝试添加到图像中的代码部分。第三个 setIcon 有效,但前两个无效。我很困惑为什么会这样。
另外,图像文件不是连续的数字。例如,我有 001,002,003,004,005,但没有 007,008,然后在 009,010 继续。我正在尝试找出一种让它跳到下一张可用图像的好方法。
总的来说,这段代码是用于三消解谜器的,这是一个用于放置在拼图网格上的图标的选择网格,因此我需要能够调用与按钮 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);
}
永远不要在任何路径引用中使用 src
,这是一个很好的迹象表明事情会出错,而是根据您的要求使用 Class#getResource
或 Class#getResourceAsStream
。
基本上,一般的想法是在尝试加载之前测试资源是否实际存在,例如...
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
(而不是默默地失败)并且在图像完全加载之前不会 return
有关 ImageIO
的更多详细信息,请参阅 Reading/Loading an Image
我在将图像批量添加到 JButton 网格时遇到问题。我正在尝试使用 for 循环,字符串名称中使用了变量。
图片名称如下:
32px-Shuffle001.png
32px-Shuffle821.png
等等
这是我尝试添加到图像中的代码部分。第三个 setIcon 有效,但前两个无效。我很困惑为什么会这样。
另外,图像文件不是连续的数字。例如,我有 001,002,003,004,005,但没有 007,008,然后在 009,010 继续。我正在尝试找出一种让它跳到下一张可用图像的好方法。
总的来说,这段代码是用于三消解谜器的,这是一个用于放置在拼图网格上的图标的选择网格,因此我需要能够调用与按钮 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);
}
永远不要在任何路径引用中使用 src
,这是一个很好的迹象表明事情会出错,而是根据您的要求使用 Class#getResource
或 Class#getResourceAsStream
。
基本上,一般的想法是在尝试加载之前测试资源是否实际存在,例如...
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
(而不是默默地失败)并且在图像完全加载之前不会 return
有关 ImageIO