当前位置: 首页 > 面试题库 >

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

毛德曜
2023-03-14
问题内容

我现在正在编写一个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中,以允许该applet显示它。

编辑1
还不能使用的paintComponent 小号
,因为这确实完全不同的东西这一点。再次使用paintComponent,但仅在派生自JComponent的组件中使用,例如JPanel(或JComponent本身)。

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



 类似资料:
  • 我有两个碎片。片段A最初在视野中。当用户按下一个按钮时,片段B会使用下面的方法被动画化到视图中。当我弹出片段B时,它会从视野中返回,但当它完成时,屏幕闪烁着白色。不确定是什么原因造成的,似乎只发生在吉吉身上而不是Lollipop上。正在使用的动画是XML中定义的上滑和下滑动画。

  • 我正在开发一个简单的聚合,它对给定资源上发生的事件总数进行汇总(请参阅:在flink中计算总数并定期发射)。在一些人的帮助下,我成功地完成了这项工作,但现在我遇到了另一个问题。 我试图计算资源生命周期的总数,但我正在从保留期为24小时的kinesis流中读取事件。因为这意味着我无法访问在此之前发生的事件,所以我需要从一个每天计算一次总数的遗留(批处理)系统引导我的状态。 基本上,我希望以某种方式从

  • 这是我的控制器: 下面是我的CanvasPane类: }

  • 有人能解释一下的用途吗,是Applets或awt或swings或Java中的变量。 我做过研究,发现它是用来覆盖的,但是这个覆盖有什么用呢? 我是初学者。如果可能的话,你能解释一下和

  • 问题内容: 我想将JApplet转换为JFrame。我在互联网上找到了一个单词搜索游戏的代码。我想在一个类的演示中使用此代码。但我不想在applet中使用它。我要在此处粘贴的代码大约有7,000个字符。我尝试使用JApplet并扩展JFrame,然后将所有用于初始化的代码放入构造函数(零自变量构造函数)中。这导致大约十个我无法解决的错误。我想制作一个单词搜索游戏,并且找到了一个很好的例子,但是我无

  • 我的JApplet在DrawOvalInputs时产生错误。html运行并调用DrawOvalInputs的类文件。到目前为止,我只能将其作为一个实际应用程序使用(这就是为什么main在块引用中)。 我对这个程序的目标是能够在 java 控制台上运行一个.html文件以中等安全设置启动 JApplet,但无论我做什么,它都无法运行。 在来这里之前,我已经浏览了相当多的网页和搜索。遗憾的是,我就是想