基本概要:處理一個產生15x15網格的遊戲,供玩家在網格中移動。網格中的每個單元格都是隨機生成的圖像,其顏色爲棕色,因此每個單元格看起來不同。唯一的問題是我試圖爲包含隨機系列顏色的每個單元格創建一個緩衝圖像。我在Dirt類中的問題是它不會調用paintComponent方法。這是Dirt類。 (在構造函數中的細胞的矩形通過)Java面板不會繪製
package game;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Dirt extends JPanel{
private Rectangle rect;
private BufferedImage image;
private int pixelSize;
public Dirt(Rectangle x){
rect = x;
image = new BufferedImage(rect.width, rect.width, BufferedImage.TYPE_INT_RGB);
pixelSize = rect.width/15;
setVisible(true);
validate();
this.repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = image.createGraphics();
Rectangle[][] rects = new Rectangle[15][15];
Color[] colors = {new Color(160,82,45),new Color(139,69,19),new Color(165,42,42)};
java.util.Random randomGenerator = new java.util.Random();
for(int i = 0; i < 15; i++){
for(int j = 0; j < 15; j++)
rects[i][j] = new Rectangle(pixelSize*i,pixelSize*j,pixelSize,pixelSize);
}
for(int i = 0; i < 15; i++){
for(int j = 0; j < 15; j++){
System.out.println(i + " " + j);
g2d.setColor(colors[randomGenerator.nextInt(3)]);
g2d.fillRect(rects[i][j].x, rects[i][j].y, rects[i][j].width, rects[i][j].height);
}
}
g2d.dispose();
}
public Image getImage(){return image;}
public Rectangle getRect(){return rect;}
}
我懷疑問題可能是你的畫,而不是傳入的圖形g,而是在該方法內創建的圖形。 – 2012-03-23 00:41:02
我把system.out.print作爲printcomponent方法的第一行,並且不被調用。我認爲它根本不會去漆畫。 – mbreen 2012-03-23 01:01:03