我一直在尝试构建这个小型的Java应用程序。我发现在java中设计UI非常困难,看似非常简单的任务变得复杂,所有这些奇怪的错误行为都会发生。在我的应用程序中,我创建了一个包含两层的JLayeredPane。一个在另一个上面,它们都包含滚动条。 以下是对这两层的解释:
第1层: 内部类似于滚动窗格的非常大的图像。图像可滚动。
第2层: 这是一个graphics2d对象,该对象绘制一个图像。一旦图像达到一定长度,图层就会得到一个滚动窗格随着时间的推移而前进。
我想连接两个图层。我希望第二层更新第1层上的滚动条。这意味着一旦它达到一定长度,两个滚动条将一起前进。当我尝试这样做时,两个滚动条确实会前进,但是(!)会发生这种奇怪的闪烁。我不明白闪烁的原因是什么。有没有其他方法以简单的方式实现这一点?我必须将第二层放在第一层之上(在图像顶部绘图)
因为我不能打开一个特别的帖子来感谢这个论坛的精彩人物,我会在这里做。谢谢,你们很有帮助。我希望这个问题也是可以解决的。答案 0 :(得分:1)
听起来你每次都以一种昂贵的方式重新绘制整个组件 - 你可以尝试绘制到BufferedImage以保存图像而不是每次都重新生成它。或者你可以试着搞清楚如何处理重绘。我建议这个article和page on Sun's website - 都讨论高效的绘画实践。
答案 1 :(得分:0)
如果没有看到您的代码,很难猜出问题出在哪里。可能你得到的油漆()事件比你真正需要的更多。
您也可以尝试使用JXLayer(http://weblogs.java.net/blog/alexfromsun/archive/2008/06/the_new_jxlayer.html)来显示您的graphics2d图层。