【发布时间】:2013-01-29 13:15:36
【问题描述】:
假设我在JScrollPane 内刻有很大的自定义控件,或者由于其他原因被剪裁了。如何从paintComponent()方法中确定要绘制哪些坐标?
【问题讨论】:
标签: java swing jscrollpane invalidation
假设我在JScrollPane 内刻有很大的自定义控件,或者由于其他原因被剪裁了。如何从paintComponent()方法中确定要绘制哪些坐标?
【问题讨论】:
标签: java swing jscrollpane invalidation
看看Painting in AWT and Swing,有很好的解释。
但一般的要点是,当你的组件被绘制时,它的剪切矩形已经设置(nb 需要检查这对于视口是如何工作的,但我怀疑它是相同的)到需要更新的可见区域。
您可以检查 Graphics 上下文的剪辑矩形过去到您的绘制方法,并确定您应该更新哪个区域。
【讨论】:
您可以通过
找到JScrollPane viewportjScrollPane.getViewport()
在那里,您可以知道 JScrollPane 显示的矩形与
jScrollPane.getViewport().getViewRect()
所以你可以 Rectangle 来绘制你的自定义组件
问候
【讨论】: