Swing小程序完成绘图后,通知的正确方法是什么?我正在编写一些计时代码来衡量applet需要多长时间,并希望包含显示任何图形的时间。
在执行所有绘图的init()方法结束时,我将一个Runnable传递给了睡眠时间为10秒的SwingUtilities.invokeLater。我在显示图形之前看到了延迟。我原以为延迟会在图形之后发生,因为我已经知道它会在绘图调用后排队。我尝试将此睡眠测试代码移动到start()并获得相同的结果。
根据我使用javascript警告消息的测试,似乎在绘制图形之前也会触发放置在HTML body标签上的onload事件。
答案 0 :(得分:4)
通常,init()
方法初始化applet的组件/布局。实际绘图由paint()
完成。
您可以通过调用paint()
并添加自己的代码来覆盖super.paint(..)
方法:
public void paint(Graphics g) {
super.paint(g);
// Add your code
}
您注意到的延迟是因为在Runnable
和SwingUtilities.invokeLater()
init()
的{{1}}