【问题标题】:How to paint only visible area of my custom control in Swing?如何在 Swing 中仅绘制自定义控件的可见区域?
【发布时间】:2013-01-29 13:15:36
【问题描述】:

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

【问题讨论】:

    标签: java swing jscrollpane invalidation


    【解决方案1】:

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

    但一般的要点是,当你的组件被绘制时,它的剪切矩形已经设置(nb 需要检查这对于视口是如何工作的,但我怀疑它是相同的)到需要更新的可见区域。

    您可以检查 Graphics 上下文的剪辑矩形过去到您的绘制方法,并确定您应该更新哪个区域。

    【讨论】:

    • for example,那么我不确定是否只有可见的矩形绘制(默认)
    【解决方案2】:

    您可以通过

    找到JScrollPane viewport
    jScrollPane.getViewport()
    

    在那里,您可以知道 JScrollPane 显示的矩形与

    jScrollPane.getViewport().getViewRect()
    

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

    问候

    【讨论】:

    • 我需要我的控件不知道它在滚动窗格内。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2010-09-27
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多