[英]How to cancel a repaint of a JPanel?
我知道JPanel默認是自動雙緩沖的。 但是,我的面板中有一個特別耗時的繪畫操作,但是當底層數據發生變化時,面板只需要重新繪制,這種情況很少見。 因此,我想重用JPanel緩沖區,而不是在每次調用repaint()
后都清除它。
我在我的JPanel子類上手動實現了一個“臟”標志,但我不知道如何在啟動后取消繪制操作。 我無法避免通話擺在首位,以重畫,因為我的面板是一個JScrollPane,正在重新粉刷每它的調整時間( 它經常出現),這將導致我的自定義面板進行重新繪制內。
如果沒有手動緩沖面板,有沒有辦法做到這一點? 如果沒有,那么與JPanel一起實現手動緩沖區的推薦方法是什么?
我有一個特別耗時的繪畫操作..只需要在基礎數據發生變化時重新繪制,這很少見。
將數據繪制到BufferedImage
,將其顯示在JLabel
。 如果更改,請調用label.repaint()
。 EG在這個答案中看到了。
獎金在標簽中顯示圖像是一種獲得具有首選大小的GUI的方法,不需要擴展任何內容。 要獲得顯示它的框架或對話框的完美大小,請調用pack()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.