在Swing中绘画,闪烁问题

时间:2011-09-27 10:16:49

标签: java swing drawing paint repaint

我在挥杆时遇到以下问题 我正在实现基本的绘图操作(线条,形状)。当我用左按钮移动鼠标时,我需要重新绘制当前的形状。所以我清除屏幕并重新绘制已绘制的形状,并且当前正在绘制一个 形状以paint()方法绘制,在鼠标移动事件中,我调用repaint()paint()会自动调用)。问题是每次重绘时屏幕都会强烈闪烁,看起来很难看。请告诉我,我做错了什么?感谢。

4 个答案:

答案 0 :(得分:7)

我认为你要找的是double buffering

答案 1 :(得分:2)

  

在paint()

中绘制形状

自定义绘画应该在paintComponent()方法中完成,并确保调用super.paintComponent()作为第一行。

自定义绘画也是在JPanel(或JComponent)上完成的,而不是直接在JFrame上完成。

答案 2 :(得分:0)

我有闪烁或闪烁的问题。我使用以下代码解决了它。

    public void update(Graphics g) {
       paint(g);
    }

    @Override
    public void paint(Graphics g) {

        //super.repaint();
        if (myimg != null) {
            g.drawImage(myimg, 0, 0, this);
        }
        //update(g);
    }

答案 3 :(得分:0)

您无需清除屏幕,只需调用repaint()即可。如果你必须清除屏幕,如果你不使用同步它会闪烁,因为绘画工作是在一个单独的线程中完成的。