[英]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.