2012-11-14 53 views
0

我想要一个循环,将贯穿每个我有的图像。我想把它们绘制到屏幕上,如果我单独绘制每个图像,但它使用了大量代码,它会很好地工作。虽然使用循环绘制每个图像应该使用更少的代码。这是我的代码。循环绘制不同的图像?

String image[] = {"carA", "carB"}; 
     for(int i = 0; i < image.length; i++){ 
     g.drawImage(image[i].getImage(), image[i].getX(), image[i].getY(), 
       image[i].getWidth(), image[i].getHeight(), this); 
     } 

它说问题是正在使用字符串。 getX()和getY()等找出x和y坐标。 我怎样才能使这个工作?

+0

也许你的意图是你的数组与String []不同,可能是包装图像并保持其位置和大小的类。 – PhiLho

回答

1

你试图调用的getImage /的getX /对的getY String对象上。 你应该先加载图片到图片对象一样,

Image img1 = Toolkit.getDefaultToolkit().getImage(image[i]); 
0

你应该初始化所有数据有关的图像,尝试这个例子:

String imageDatas[][] = { 
     {"image_path_1.jpg", "0", "0", "100", "100"}, 
     {"image_path_2.jpg", "100", "0", "100", "100"} 
}; 
for (String[] imageData : imageDatas) { 
    String filePath = imageData[0]; 
    int x = Integer.parseInt(imageData[1]); 
    int y = Integer.parseInt(imageData[2]); 
    int width = Integer.parseInt(imageData[3]); 
    int height = Integer.parseInt(imageData[4]); 

    Image img = Toolkit.getDefaultToolkit().getImage(filePath); 
    g.drawImage(img, x, y, width, height, this); 
} 
0

字符串是存储字符的类型。所以它不能用于你的要求。

为了满足您的要求,您应该创建自己的类型。

好的地方开始我创建一个你的类将使用的接口。

public interface IMichaelImage { 

    int getX(); 
    int getY(); 
    Image getImage(); 

} 

然后,你需要创建一个类,将能够存储你的程序的信息逻辑将使用

public MichaelImage implements IMichaelImage { 

    private int x = 0; 
    private int y = 0; 
    private Image image; 

    public MichaelImage(Image image) { 
    this.image = image; 
    } 

    public void setX(int x) { 
    this.x = x; 
    } 

    public void setY(int y) { 
    this.y = y; 
    } 

    @Override 
    public int getX() { 
    return this.x; 
    ] 

    @Override 
    public int getY() { 
    return this.x; 
    } 

    public Image getImage() { 
    return this.image; 

    } 

} 

在,你将有这样的事情

Collection<IMichaelImage> images = loadImages(); 

    for(IMichaelImage image : images) { 
    g.drawImage(image.getImage(), image.getX(), image.getY()); 
    }