2012-11-14 56 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()); 
    }