2012-11-14 56 views
2

我正在制作一个游戏,我需要在移动它们时主动绘制棋盘和棋子。我已经搜索了几个小时,但我找不到解决方案。不能在JPanel上绘制.jpeg

它们位于与类相同的文件夹中。

预先感谢任何帮助:)

代码:

import java.awt.*; 
import javax.swing.*; 

public class MyPanel extends JPanel{ 
    private static final long serialVersionUID = 1L; 

    public void paint(Graphics g) { 
     try { 
      Image board = new ImageIcon("images/ChackerBoard.jpeg").getImage(); 
      Image black = new ImageIcon("images\\BlackPawn.jpeg").getImage(); 
      Image white = new ImageIcon("images\\WhitePawn.jpeg").getImage(); 

      this.setSize(320, 320); 

      g.drawImage(board, 0, 0, this); 
      for (int i = 0; i < Game.BlackList.size(); i++) { 
       g.drawImage(black, (Game.BlackList.get(i).GetX() * 40) - 36, (Game.BlackList.get(i).GetY() * 40) - 36, this); 
      } 
      for (int i = 0; i < Game.WhiteList.size(); i++) { 
       g.drawImage(white, (Game.WhiteList.get(i).GetX() * 40) - 36, (Game.WhiteList.get(i).GetY() * 40) - 36, this); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

图片:

http://i.stack.imgur.com/bhuc2.jpg

http://imageshack.us/a/img7/8673/checkerboardo.jpg

回答

0

@FailX中的paintComponent,ImageObserver对象为空。将图像观察者设置为“this”并且它可以工作。

@Override 
protected void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    g.drawImage(img, 0, 0, this); //Image is also drawn 
    g.drawLine(10, 10, 100, 50); //Line is drawn 
    g.draw3DRect(20,20,50,30,true); // Rectangle is drawn 
} 
+0

好的,谢谢:)对于迟到的回应btw抱歉;) – lazyboy007