如何在Swing中仅绘制我的自定义控件的可见区域?

时间:2013-02-13 20:54:17

标签: java swing jscrollpane invalidation

假设我在JScrollPane内刻有大型自定义控件或由于其他原因而被剪裁。如何从paintComponent()方法中确定要绘制哪个坐标?

2 个答案:

答案 0 :(得分:4)

看看Painting in AWT and Swing,它有一个很好的解释。

但一般的要点是,当你的组件被绘制时,它的剪切矩形已经设置(nb需要检查它对视口的工作原理,但我怀疑它是一样的)到需要更新的可见区域。 / p>

您可以检查图形上下文的剪辑矩形以及您的绘画方法,并确定您应该更新的区域。

答案 1 :(得分:2)

你可以找到 JScrollPane viewport

jScrollPane.getViewport()

在那里你可以知道 JScrollPane 所显示的矩形

jScrollPane.getViewport().getViewRect()

所以你可以 Rectangle 来绘制你的自定义组件

此致