簡體   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