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 坐标。我怎样才能让它工作?

4

4 回答 4

1

您正在尝试在 String 对象上调用 getImage /getX / getY。您应该首先将您的图像加载到图像对象中

Image img1 = Toolkit.getDefaultToolkit().getImage(image[i]);
于 2012-11-14T14:00:45.610 回答
0

String 是一种存储字符的类型。所以它不能用于您的要求。

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

开始创建您的班级将使用的界面的好地方。

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());
  } 
于 2012-11-14T15:35:59.447 回答
0

使用drawString()方法,它可以绘制字符串:

于 2012-11-14T13:56:03.907 回答
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);
}
于 2012-11-14T14:43:59.040 回答