必须有一些更有效的方法来设置图像不存在吗?或者这是好事吗?
public Image setImage(String img){
ImageIcon imageIcon = new ImageIcon(setURL("Images/" + img));
Image image;
image = imageIcon.getImage();
//imgWidthTemp = image.getWidth(null);
//imgHeightTemp = image.getHeight(null);
return image;
}
public URL setURL(String url){
String Url = url;
try{
URL imgURL = getClass().getClassLoader().getResource(url);
if(imgURL != null){
return imgURL;
}
}catch(NullPointerException e){}
return null;
}
我真的不需要setURL()
方法,只是让事情变得更清晰,更容易处理。我只是想知道是否有更有效的方法来设置自定义图像(如果有的话)。即使没有这两种方法,仍然需要编写很多代码。它变得更简单了吗?我的意思是为什么我们不能只创建一个新图片,而不是首先制作ImageIcon
然后说Image myImage = ImageIcon.getImage()
。没有抱怨,但如果你有2000多张图片可以设置,那么如果没有一两种方法,那将会是很多代码(以我的世界为例?如果我自己这样说,那就是很多图像)。而电子游戏大多只有大量的图像而不是代码有时仅占代码的30%。
答案 0 :(得分:1)
目前还不清楚你在这里想要做什么,但是Java Tutorial有一个关于处理包含loading images上的材料的图像的部分。阅读它以获取显示建议方法的代码。
我不是这方面的专家,但我希望本教程推荐的直接方法比使用ImageIcon
的间接方法更快。 (但我没有对它进行基准测试!!)
您的代码还有其他问题。特别是,setUrl
方法很奇怪。
名称setUrl
用词不当。该方法不是“设置”任何东西。相反,它正在尝试将路径名映射到资源URL。
不需要try-catch。该代码中的任何内容都不应该投掷NPE。
如果删除不必要的try-catch,那么逻辑归结为:
URL imgURL = getClass().getClassLoader().getResource(url);
if (imgURL != null) {
return imgURL;
} else {
return null;
}
这是疯狂/愚蠢的东西!就这样做:
return getClass().getClassLoader().getResource(url);
最后,有一点很重要,您需要了解实际优化。
众所周知,人们对程序是快还是慢的直觉,以及使它快或慢的原因......都很差。不要依赖你的直觉(即猜测问题是什么,或将会是什么),最好做以下事情: