我做了一个俄罗斯方块的游戏,但是界面不太漂亮,我希望给窗口增加一个背景图片,但是如果在paint()方法中绘制图片的话,玩游戏的时候因为还要不断的调用paint()方法,那么图片就会消失,请问该怎么办才能加上背景图片同时保证图片一直显示???求高手解答,谢谢!!java游戏显示图片

解决方案 »

  1.   

    求高手解答啊我试过在JRootPane里面添加背景图片,然后在JContentPane里面绘图,结果图片依然不能显示,请问该怎么办啊
      

  2.   

    我写了下,楼主可以参考import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Shape;
    import java.awt.geom.Rectangle2D;
    import java.io.File;
    import java.io.IOException;
    import java.util.Timer;
    import java.util.TimerTask;import javax.imageio.ImageIO;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    public class ReflashBack extends JFrame{
    public static void main(String[] args){
    new ReflashBack();
    }
    public ReflashBack(){
    ImageComponent com=new ImageComponent();
    add(com);
    setVisible(true);
    setSize(1366,768);
     Timer timer = new Timer();
    //在0.1秒后执行此任务,每次间隔0.2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
     timer.schedule(com.mytask(), 100, 200);
    }}
    class ImageComponent extends JComponent{
    int y=0;
    public ImageComponent(){
    try{
    img=ImageIO.read(new File("razer.jpg"));
    }
    catch(IOException e){
    e.printStackTrace();
    }
    }
    public TimerTask mytask() {
    // TODO Auto-generated method stub
    return new TimerTask() {

    @Override
    public void run() {
    // TODO Auto-generated method stub
    y+=20;
    repaint();
    }
    };
    }
    public void paintComponent(Graphics g){
    Graphics2D g2=(Graphics2D) g;
    if(img==null) return;

    int imageWidth=img.getWidth(this);
    int imageHeight=img.getHeight(this);

    g.drawImage(img,0,0,null);
    Rectangle2D.Double d=new Rectangle2D.Double(200,200+y,200,200);
    g2.draw(d);
    g2.setColor(Color.RED);
    g2.fill(d);
    }
    private java.awt.Image img;
    }