当JPanel在JScrollPane中时,绘图如何工作?

时间:2014-10-12 22:08:12

标签: java swing jpanel jscrollpane paintcomponent

所以我在JPanel内有一个JScrollPane(让我们将它们称为面板和窗格以供参考) 所以我添加了如下所示的窗格:

JScrollPane pane = new JScrollPane(panel);

然后我将我的窗格添加到框架中。 所以现在我想在我的面板中画画。我首先尝试通过覆盖面板类中的paintComponent方法来做到这一点。我认为我的整个面板都会被绘制,然后我可以滚动它,因为我将面板添加到了窗格。但每次我移动酒吧,它都会不断尝试重绘。我的逻辑不对吗?我应该用另一种方式画画吗?

1 个答案:

答案 0 :(得分:0)

  

我认为我的整个面板都会被绘制然后我可以滚动浏览它,因为我将面板添加到了窗格中。但每次我移动吧,它都会不断尝试重绘。

这就是JScrollPane的工作原理,有关算法的说明,请参阅JViewport的文档。

如果您的绘图算法涉及繁重的处理,或者您希望避免频繁重绘面板,则可以draw to an BufferedImage代替,然后使用Graphics2d中的drawImage()来更有效地绘制面板滚动更新。