我知道默認情況下JPanel是自動雙緩衝的。但是,我在面板上進行了特別耗時的繪畫操作,但只有在底層數據發生變化時才需要重新繪製面板,這很少見。因此,我想重複使用JPanel緩衝區,而不是在每次調用repaint()
後清除它。如何取消重新繪製JPanel?
我已經手動在我的JPanel子類上實現了一個「髒」標誌,但我不知道如何在啓動後取消繪製操作。由於我的面板位於JScrollPane中,每次調整大小時都會重新繪製(其中的確經常發生),這導致我的自定義面板被重新繪製,所以我無法避免重新調用刷新。
有沒有辦法做到這一點,而無需手動緩衝面板?如果不是,那麼與JPanel一起實現手動緩衝區的推薦方法是什麼?
您可以將'JPanel'的內容保存到'BufferedImage'中,並將其用於顯示,而不是在每次重繪時重新計算圖像。 – 2013-05-10 05:43:46
@ExtremeCoders儘管可以[獲取組件的圖像](http://stackoverflow.com/a/5853992/418556),但這並不簡單。在標籤中顯示圖像是獲取具有不需要擴展任何內容的首選大小的GUI的一種方式。而且既然你有這個形象,你不妨直接畫它。 – 2013-05-10 06:04:25