停止闪烁/重新绘制

时间:2013-05-13 03:54:15

标签: java swing applet awt repaint

所以我有一个嵌入JFrame的java.applet.Applet。 applet使用java.awt.Canvas进行绘制。 我发布的代码对我来说相当多,而且没有“小”的例子,但至少这是一张图片:

enter image description here 好的,在上面,画布不断被applet吸引。按下切换按钮时隐藏底部的JTextArea,并在未按下切换按钮时显示。

但是,每次显示/隐藏TextArea时,Applet / Canvas都会闪烁。每次显示/隐藏TextArea时都会调整JFrame的大小。

现在我用于显示/隐藏的小片段如下:

public void setConsoleVisible(boolean Visible) {
    this.ScrollPane.setVisible(Visible); //Show/Hide the JTextArea.
    frame.pack(); //Pack the JFrame to resize it.
    frame.setSize(frame.getWidth(), frame.getHeight() + 1); //resize the frame by 1px.
}

如何在调整大小并显示/隐藏JTextArea时阻止它闪烁?我的Canvas / Applet已经是双缓冲的。

1 个答案:

答案 0 :(得分:1)

您正在绘制的区域可能小于可见区域。因此,一些垃圾会被涂上,导致闪烁。为什么只用一个像素调整帧大小?尝试删除,

frame.setSize(frame.getWidth(), frame.getHeight() + 1);