Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java分层窗格中的滚动条问题_Java_User Interface_Scrollbar - Fatal编程技术网

java分层窗格中的滚动条问题

java分层窗格中的滚动条问题,java,user-interface,scrollbar,Java,User Interface,Scrollbar,我一直在尝试构建这个小型java应用程序。我发现用java设计UI非常困难,看似简单的任务变得复杂,所有这些奇怪的错误行为都会发生。在我的应用程序中,我创建了一个包含两层的JLayeredPane。一个在另一个上面,它们都包含滚动条。 以下是对这两层的解释: 第1层: 一个非常大的图像,里面有一个类似滚动窗格的东西。图像是可滚动的 第2层: graphics2d对象,该对象绘制图像。一旦图像达到一定长度,图层将获得一个滚动窗格,该窗格将随着时间的推移与图形一起前进 我想连接两层。我希望第二层更新

我一直在尝试构建这个小型java应用程序。我发现用java设计UI非常困难,看似简单的任务变得复杂,所有这些奇怪的错误行为都会发生。在我的应用程序中,我创建了一个包含两层的JLayeredPane。一个在另一个上面,它们都包含滚动条。 以下是对这两层的解释:

第1层: 一个非常大的图像,里面有一个类似滚动窗格的东西。图像是可滚动的

第2层: graphics2d对象,该对象绘制图像。一旦图像达到一定长度,图层将获得一个滚动窗格,该窗格将随着时间的推移与图形一起前进

我想连接两层。我希望第二层更新第1层上的滚动条。这意味着一旦达到一定长度,两个滚动条将同时前进。当我尝试这样做时,两个滚动条确实前进了,但是发生了这种奇怪的闪烁。我不明白闪烁的原因是什么。有没有其他简单的方法来实现这一点?我必须在第一层的上面有第二层(在图像的上面绘制)


既然我不能打开一个特别的帖子来感谢这个论坛的优秀人士,我就在这里写。谢谢你,你帮了大忙。我希望这个问题也能解决。

如果没有看到您的代码,很难猜测问题出在哪里。可能您得到的paint()事件比实际需要的要多


您还可以尝试JXLayer()来显示graphics2d层。

听起来您每次都在以某种昂贵的方式重新绘制整个组件-您可以尝试绘制到BuffereImage以保存图像,而不是每次重新生成图像。或者你也可以试着搞乱如何处理重绘。我建议这个和这个-都讨论性能绘画实践。

这能解决问题吗?现在有两个层,每个层的行为类似于JScrollPane。取而代之的是使用两个固定的层,但是将JLayerdPane放在一个JScrollPane中,让它处理滚动。