繁体   English   中英

JApplet - super.paint(); 导致闪烁

[英]JApplet - super.paint(); causes flicker

我现在正在编写一个 JApplet,每当我调用 super.paint() 时,applet 都会闪烁。 我正在使用双缓冲(绘制到图像,然后渲染该图像),但我认为 super.paint() 正在清除屏幕或其他东西,打败了我的双缓冲。

我知道我应该使用paintComponents(),但由于某种原因,当我调用“currentScreen.Draw(g)”时,它不会显示屏幕的绘制。

谁能帮我这个?

public void paint(Graphics g)
{   

    super.paint(g);//Remove this and it works, but the JApplet background color will be gone, and everything will be white.

    currentScreen.Draw(g);
}

画面绘制方法

public void Draw(Graphics g)
{

    if(buffer != null)
        g.drawImage(buffer, 150, 0, null);
    //g.drawString(drawstring, x, y);
}

不要使用绘画,也不要直接在 JApplet 中绘制。 而是在 JPanel 的 paintComponent 方法中绘制并调用 super.paintComponent(g) 作为该方法的第一行。 将该 JPanel 添加到您的 JApplet 的 contentPane 以允许小程序显示它。

编辑 1
此外,您不能为此使用 paintComponent 因为它的作用完全不同。 再次使用paintComponent,但只能在从JComponent 派生的组件中使用,例如JPanel(或JComponent 本身)。

编辑 2还要始终在您的paintComponent 方法上方放置一个@Override,以确保您实际上覆盖了超级方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM