我对该语言完全陌生,我正在努力了解ImageIcon的工作原理。我在子类中有一个方法,我想基于switch语句返回一个ImageIcon。我唯一的问题是我似乎无法让.setImage()工作。我知道语法是setImage(图像图像),但我不确定(图像图像)在参数中的实际含义。
这是我下面的代码。我试过搜索,但似乎没有一个特定于我的问题。感谢。
public ImageIcon getImage()
{
ImageIcon bxIcon = new ImageIcon("g.jpg");
switch(zone)
{
case 'a': bxIcon.setImage("sml.jpg");
break;
case 'b': bxIcon.setImage("med.jpg");
break;
case 'c': bxIcon.setImage("lrg.jpg");
break;
}
return boxIcon;
}
我知道上面的代码不会编译,因为语法不正确,我只是不确定如何正确使用它。我曾尝试在.setImage()上阅读Java信息,但无法找到任何可以解决我的问题。任何帮助都会很棒!
答案 0 :(得分:2)
在您的代码中,您只需返回一个新的ImageIcon,而不是依赖于设置图像
public ImageIcom getImage(){
switch(zone)
{
case 'a': return new ImageIcon("sml.jpg");
//etc...
}
return new ImageIcon("g.jpg");
}
作为对setImage方法的解释:Image是一个接口,实现此接口的公共类是BufferedImage。您可以使用ImageIO将图像文件读入BufferedImage对象。请参阅Reading/Loading an Image教程。例如,您可以阅读图像,然后设置图标的图像
BufferedImage image = ImageIO.read(new File("sml.jpg"));
//Above could also be defined as an Image
bxIcon.setImage(image);
答案 1 :(得分:1)
好吧,让我们看一下docs。
方法的签名是public void setImage(Image image)
。这意味着它接受Image
对象。你传递的是String
,所以这种方法不起作用,但正如JB在评论中指出的那样,人们可以简单地创建它!
ImageIcon
有constructor,允许用户直接从文件中创建ImageIcon
。
new ImageIcon("img1.jpg");
编辑:正如JB指出的那样,ImageIO
可用于加载Image
对象,然后将其传递给ImageIcon
。