gpt4 book ai didi

java - 使用 drawimage 和 repaint 时如何替换旧图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:55 24 4
gpt4 key购买 nike

import java.awt.*;
import javax.swing.*;
import java.util.concurrent.TimeUnit;
public class testing extends JPanel{

//this is the testing game board
public static void main(String[] args)throws Exception{
pussy p=new pussy();
JFrame f=new JFrame("HI");
f.setSize(500,500);
f.setVisible(true);
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.add(p);


//if hit then repaint
//testing
for(int i=0;i<1000;i++){
TimeUnit.SECONDS.sleep(1);
p.repaint();}
}





}


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

public class pussy extends JPanel{

int x; //xcoord of pussy
int y; //ycoord of pussy
int h=500; // height of the game board
int w=500; // width of the game board
int hp=50; // height of the pussy
int wp=30; // width of the pussy
Image image;
pussy(){
try {
image = ImageIO.read(new File("pussy.png"));
}
catch (Exception ex) {
System.out.println("error");
}
}


@Override
public void paintComponent(Graphics g) {
nextlevel(h,w);
g.drawImage(image,x,y,wp,hp,null);
}


//create a random x,ycoord for the new pussy
public void nextlevel(int h, int w){
this.x=(int)(Math.random()*(w-2*wp));
this.y=(int)(Math.random()*(h-2*hp));


}
}

我的代码有 2 个类我想让我的形象动起来,但是……它一直在框架上添加新图像,但我总是想更换即一次只有一个图像在屏幕上我在替换之前使用 drawoval 但这次 drawimage 不同我该如何解决谢谢

最佳答案

  1. 您的 paintComponent(...) 方法需要调用 super 方法,可能是它主体内部的第一个方法调用:super.paintComponent(g)' .这将清除之前绘制的所有图像。这是你的主要问题。
  2. 您的 Swing 程序不应该像您正在做的那样 hibernate 或暂停,因为一旦您将该代码移出 main,这就会中断。而是为您的动画使用 Swing 计时器。

例如,

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // ****** be sure to add this ******
nextlevel(h,w);
g.drawImage(image,x,y,wp,hp,null);
}

关于java - 使用 drawimage 和 repaint 时如何替换旧图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21438165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com