2011-03-17 66 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