编辑:这是一个Netbeans项目。 所以我创建了一个名为Card的JButton子类。我正在尝试在创建时为按钮设置一个图标。
package matchinggame;
public class Card extends JButton {
final static ImageIcon defaultIcon = new ImageIcon("cardback.jpg");
...
public Card(int secretIconIndex) {
//Set the button's icon to the default icon
setIcon(defaultIcon);
...
}
...
}
如果您想知道,“cardback.jpg”图片的位置是:
C:\Users\Jesse\SkyDrive\Documents\RCS\Grade 12\ICS4U\M9\MatchingGame\src\matchinggame\cardback.jpg
它与所有类在同一个文件夹/包中,所以我相信我可以保留相应的文件路径。当我运行程序时,所有按钮都是空白的(没有文字或图标)。这是构造函数问题还是文件路径问题?
答案 0 :(得分:4)
如果这是Eclipse项目,则将图像存储在resources/
文件夹的src/
文件夹中。
setButtonIcon("cardback.jpg");
public void setButtonIcon(String filename) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/"+filename);
ImageIcon icon = new ImageIcon(ImageIO.read(input));
super.setIcon(icon);
}
答案 1 :(得分:1)
问题评论中回答了我的问题。 brano88和Hovercraft Full of Eels表示使用资源而不是文件路径。以下解决了我的问题:
final ImageIcon defaultIcon = new ImageIcon(getClass().getResource("/resources/cardback.jpg"));
我把它放在我的卡片课上。
注意:我将图像移动到Eclipse中“src”文件夹或Netbeans中“Source Packages”文件夹中的新“资源”包。
答案 2 :(得分:0)
如果使用“eclipse”,图像必须位于文件夹“src”内才能使用绝对路径。
使用:
new File("cardback.jpg").exists() // to see if the file is in the right place