繁体   English   中英

如何检测JPanel子组件绘制事件?

[英]How to detect JPanel child component paint event?

我有一个JPanel,可以在其中放置组件。 每当子组件(即使是嵌套的)重新绘制时,我都需要得到通知。 将组件添加到JPanel时,是否有可以注册的事件?

我的目的是在JPanel的右边缘和下边缘绘制一个滚动条,但是当重画子组件时,它与滚动条重叠并且使滚动条的一部分不可见。 我想在组件刷新其视图时重新绘制滚动条,以使其停留在滚动条后面。

为了更清楚一点,这两个是UI的屏幕截图。

当组件覆盖滚动条时 当滚动条覆盖组件时

第一张图片不正确,但是只有当我将鼠标悬停在组件上时,这种情况才会发生。 否则,看起来不错。 右边的图像是装载容器的时间。 我希望组件始终显示在滚动条的后面,但是我只是无法检测到何时重新绘制了特定的组件。

对于那些遇到类似问题的人,

我已经在Swing自己的绘画机制中找到了答案。 如果要从容器的子项接收组件绘制事件,请重写isPaintingOrigin()方法。

@Override
protected boolean isPaintingOrigin() {
    return true;
}

仅这是足够的,并且绘画事件将由基础容器调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM