[英]race condition when calling super.paint jframe
我正在嘗試用fillRect
填充整個 canvas 。 每當我在重寫的paint
方法的開頭包含super.paint()
時, super.paint()
有時會在fillRect
之后被調用,從而導致super.paint()
是先繪制還是drawRect
出現不可預知的行為。
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
public class DebugJFrameRace extends JFrame {
public DebugJFrameRace () {
super("Debug race");
this.setVisible(true);
this.setSize(600, 600);
this.repaint();
}
public void paint(Graphics g) {
super.paint(g);
// clear background
g.setColor(Color.black);
g.fillRect(0, 0, 600, 600);
System.out.println("Finished");
}
public static void main(String[] args) {
DebugJFrameRace app = new DebugJFrameRace ();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我對發布的代碼沒有問題。
我不太確定它的設計目的是什么。 始終繪制黑色背景。
但是,發布的代碼不遵循 Swing 准則:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.