在JPanel上画线而不重新绘制它

时间:2011-05-18 15:24:50

标签: java swing paintcomponent

我希望在JPanel上绘制一条垂直线,然后让它滑过它,而不会调用paintComponent()的{​​{1}}。我曾考虑过使用JPanel,但我不认为这是正确的方法,因为包含GlassPane的框架中还有其他组件,因此它并不特定({I}我真的不确定它不会打电话给JPanel

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

即使使用GlassPane,底层组件也必须在某些时候重新绘制。没有一种避免paintComponent调用JPanel的好方法。

但是,除了绘画之外,JPanel不应该在paintComponent中进行操作。如果你试图避免调用它,那么听起来你在paintComponent方法中有某些东西需要以某种方式改变或缓存。

答案 1 :(得分:1)

如果你只想将线条绘画代码与其他绘画代码隔离开来,也许你应该使用Layered Panes

如果您的绘画代码很昂贵,那么您可能应该创建一个BufferedImage,然后只需在paintComponent()代码中重绘图像。这比每次重绘都要快。

答案 2 :(得分:0)

您是否有理由不想在JPanel上调用paintComponent()方法?重新绘制对象以使线条滑过它很可能是最简单的解决方案。