[英]Java JFrame / Canvas doesn't repaint
鼠標偵聽器調用repaint()
並且我可以看到它確實經過了繪圖部分,因為我看到 globalcounter 在System.out.println()
的輸出中遞增。 然而,在屏幕上,我看不到任何變化,直到我最小化窗口並再次最大化、調整它的大小或將其移出可見屏幕區域再移回。顯然我希望它在沒有我干預的情況下進行更新。
class GUI extends javax.swing.JFrame {
int globalcounter=0;
class MyCanvas extends Canvas {
@Override
public void paint(Graphics g) {
globalcounter++;
g.drawString(globalcounter,100,100);
System.out.println(globalcounter);
}
}
}
(最初我從不斷更新的文件(網絡攝像頭)加載圖像並將其繪制在畫布上。當我將其部分拖出可見屏幕區域並重新拖回時,“外面”的部分被刷新,其余的沒有。)
revalidate()
而不是repaint()
沒有改變任何東西。
我知道這篇文章是Java 重繪無法正常工作的重復,但是當我在那里發布它時它被刪除了。
為什么要向 Swing 組件 JFrame 添加 AWT 組件 Canvas? 您應該只堅持使用 Swing 組件。 而且您是否知道 MyCanvas 的大小,以及您如何將它添加到 JFrame 中,因為您沒有顯示此代碼。
考慮
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.