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

Java 如何在Swing中仅绘制自定义控件的可见区域?,java,swing,jscrollpane,invalidation,Java,Swing,Jscrollpane,Invalidation,假设我在JScrollPane中有一个很大的自定义控件,或者由于其他原因而被裁剪。如何从paintComponent()方法中确定要绘制的坐标?看看,它有一个很好的解释 但一般的要点是,在绘制组件时,其剪切矩形已经设置到需要更新的可见区域(nb需要检查视口的工作方式,但我怀疑是相同的) 您可以检查图形上下文的剪辑矩形是否已通过绘制方法,并确定应更新的区域。看看,它有一个很好的解释 但一般的要点是,在绘制组件时,其剪切矩形已经设置到需要更新的可见区域(nb需要检查视口的工作方式,但我怀疑是相同的)

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

看看,它有一个很好的解释

但一般的要点是,在绘制组件时,其剪切矩形已经设置到需要更新的可见区域(nb需要检查视口的工作方式,但我怀疑是相同的)

您可以检查图形上下文的剪辑矩形是否已通过绘制方法,并确定应更新的区域。

看看,它有一个很好的解释

但一般的要点是,在绘制组件时,其剪切矩形已经设置到需要更新的可见区域(nb需要检查视口的工作方式,但我怀疑是相同的)

您可以检查图形上下文的剪辑矩形是否超过绘制方法,并确定应更新的区域。

您可以使用

一旦到了那里,您就可以知道用

因此,您可以使用它来绘制自定义组件

关于

您可以通过

一旦到了那里,您就可以知道用

因此,您可以使用它来绘制自定义组件


关于

,则我不确定是否只绘制了可见的矩形(默认),也不确定是否只绘制了可见的矩形(默认)。我需要我的控件不知道它在滚动窗格内。我需要我的控件不知道它在滚动窗格内。
jScrollPane.getViewport()
jScrollPane.getViewport().getViewRect()