我是该语言的新手,我想了解ImageIcon的工作原理。我在子类中有一个方法,我想基于switch语句返回ImageIcon。我唯一的问题是我似乎无法使.setImage()工作。我知道语法是setImage(Image image),但是我不确定参数中的真正含义。

这是我下面的代码。我曾尝试搜索,但似乎没有一个是我的特定问题。谢谢。

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信息,但找不到能解决我问题的任何东西。任何帮助将是巨大的!

最佳答案

在您的代码中,您只需返回一个新的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);

10-07 22:51