java - 重画功能

标签 java swing graphics repaint

我需要有关 repaint() 函数的一些帮助。当我运行该程序时,它会产生图像闪烁效果。怎么了?

public class Game extends JFrame {
    private static final long serialVersionUID = 1L;

    public Game() {
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(Toolkit.getDefaultToolkit().getImage("Images/bg.jpg"),0,0,this);
        g.drawImage(Toolkit.getDefaultToolkit().getImage("Images/player.png"),0,448,this);
        repaint();
    }

    public static void main(String[] args) {
        Game langas = new Game();
        langas.setSize(900,550);
        langas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        langas.setTitle("Best Game EVER! LOL");
        langas.setVisible(true);
        langas.setLocationRelativeTo(null);
        langas.setResizable(false);
    }
}

抱歉我的英语不好,如果我的代码看起来很愚蠢,我很抱歉,我是初学者。

最佳答案

你写了一个无休止的递归,因为:

repaint 调用 paint,后者又调用 repaint,后者又调用 paint,...

您陷入了重绘循环,因此图像闪烁。

关于java - 重画功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25291568/

相关文章:

java zkoss EventListener如何获取事件变量

Java Writer 在单次写入后停止

Java:如何使 JSpinner 显示具有一定偏移量的值

java - JLabel 中的 HTML 未正确显示

c++ - opengl画线出错?

java - Spring Data JPA + Hibernate 将方法标记为事务性

java - 将数组列表格式化为特定格式

java - 在 Jlist 中编辑项目

c# - UWP 中的最近邻渲染

c# - 用鼠标绘图会导致像素之间出现间隙