2011-03-17 69 views
1

我一直试图使用SetClip()在组件边界之外绘制组件,但事实证明这是非常麻烦的,而且大部分互联网似乎都认为它不值得去做。setClip()的替代方法

所以,我正在转向你可爱的人寻求帮助。有没有办法在组件的边界之外绘制?我需要将界限留在原来的位置,因为他们也注册了mouseEntered和mouseExited事件。

+0

您是针对AWT还是Swing? – trashgod 2011-03-18 10:28:04

+0

@trashgod:呃......我想我正在使用一种混合物......?现在看来,这似乎不是一个好主意...... – Tharwen 2011-03-21 12:52:08

+1

[Mixing Heavy and light components]中有一些指导原则(http://java.sun.com/products/jfc/tsc/articles /混合/)。 – trashgod 2011-03-21 12:55:14

回答

2

为了安全起见,setClip()“设置了用户剪辑,它独立于与设备边界和窗口可见性关联的剪辑。”如果您的组件位于可见的Container中,则可以通过覆盖容器的paint()(或Swing中的paintComponent())来绘制组件。 getComponents()方法将为您提供一个包含组件的数组,您可以从中获取容器坐标中的位置。

+0

我试图避免这种情况。能够将组件放置在容器中而不用担心手动绘制每个组件会很好。那么,如果这是唯一的方法,我可能也是。 – Tharwen 2011-03-18 08:16:12

+0

哦,等等......我只是明白'独立于与设备边界和窗口可视性相关的限幅'的含义。谢谢。 – Tharwen 2011-03-18 08:19:20