0

我有一个包含许多自定义组件的 Java Swing 应用程序。布局是一个大的 JScrollPane,其中包含一个 JPanel,它在一个 BoxLayout 中从左到右有几个面板。

在下图中,代码面板包含一个 JScrollPane,其中包含另一个绘制其文本的面板。这都是自定义的,没有 JTextArea/JTextView/Whatever。

我被下面的效果难住了。似乎正在绘制的任何“补间”不是不透明的,或者没有在正确的时间重新绘制。我已经尽我所能,但没有解决问题的运气。绘制文本的代码非常简单 - 使用 Graphics2D 和 g2.drawString(...)。

在此处输入图像描述

4

1 回答 1

1

API 指出, “JComponent如果您不遵守opaque 属性,您可能会看到视觉伪影。” 这里考察了一个违反这一原则的典型例子。该效果通常源于显示您告诉 Swing 不需要重新绘制的缓冲残余。尤其是,

组件实现最常见的错误之一是它们允许 opaque 属性默认为true,但它们并没有完全渲染由其边界定义的区域,结果是在未渲染区域中偶尔出现屏幕垃圾。

于 2013-11-06T17:06:28.130 回答