当Swing完成绘图时通知

时间:2012-01-05 21:43:33

标签: java javascript swing applet

Swing小程序完成绘图后,通知的正确方法是什么?我正在编写一些计时代码来衡量applet需要多长时间,并希望包含显示任何图形的时间。

在执行所有绘图的init()方法结束时,我将一个Runnable传递给了睡眠时间为10秒的SwingUtilities.invokeLater。我在显示图形之前看到了延迟。我原以为延迟会在图形之后发生,因为我已经知道它会在绘图调用后排队。我尝试将此睡眠测试代码移动到start()并获得相同的结果。

根据我使用javascript警告消息的测试,似乎在绘制图形之前也会触发放置在HTML body标签上的onload事件。

1 个答案:

答案 0 :(得分:4)

通常,init()方法初始化applet的组件/布局。实际绘图由paint()完成。

您可以通过调用paint()并添加自己的代码来覆盖super.paint(..)方法:

public void paint(Graphics g) {
   super.paint(g);
   // Add your code
}

您注意到的延迟是因为在RunnableSwingUtilities.invokeLater()

之间的某处调用了传递给init()的{​​{1}}