gpt4 book ai didi

Java 图形绘制在现有图形之上

转载 作者:行者123 更新时间:2023-12-01 18:14:57 26 4
gpt4 key购买 nike

主类:

    public Main() {
Frame f = new Frame();
final Panel p = f.p;

final Player player = new Player();

Timer t = new Timer(UPDATE_PERIOD, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Graphics g = p.getGraphics();
p.render(g);

player.tick();
player.render(g);

g.dispose();
}
});
t.start();
}

播放器渲染方法:

public void render(Graphics g) {
g.drawImage(Images.get("player"), x, y, null);
}

问题是,之前绘制的所有图像仍然存在。示例(当我更改绘制图像的 x 或 y 时): screenshot

最佳答案

要在 Swing 中绘图,您不应该直接从 JPanel 获取 Graphics 对象。相反,重写 paintComponent 方法并使用参数 Graphics 对象来执行自定义绘图,并调用父方法来删除先前的绘制

@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
//custom painting goes here
}

如果您希望触发重绘,请在 JPanel 上使用该名称的方法:

p.repaint();

关于Java 图形绘制在现有图形之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223145/

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