Java:使用多个线程在JPanel上同时绘制

时间:2010-05-21 15:28:35

标签: java swing multithreading

我有一个JPanel,我希望在其上有几个线程绘制“动画”。 “动画”由一个带有ImageIcon的JLabel组成,它正从屏幕的一个区域移动到另一个区域。

现在,问题是 - 我希望通过提到的那些线程在屏幕上描绘几个这样的动画。问题是 - JPanel的“paint()”方法一次只能由一个线程触发 - 导致动画以串行方式执行,而不是以并行方式执行。

知道如何在屏幕上同时拥有多个这样的动画?

2 个答案:

答案 0 :(得分:4)

无法使用多个线程来执行您想要的操作。 Swing Toolkit是单线程的 。正确的方法是使用其中一个动画框架:

答案 1 :(得分:2)

Swing不是线程安全的,因此它不是一个支持的用例来同时从几个线程做与UI相关的东西。

转到模型 - 视图 - 控制器(MVC)模式:

  • 让所有线程更新(线程安全)模型。
  • 每当模型更新时,请调用重绘。
  • repaint()将安排UI线程调用正确的paint-methods。
  • 然后,paint-method应该只是读取模型的状态,并相应地绘制组件。