Java:如何使用多线程在JPanel上同时绘制图形

4
我有一个JPanel,希望在上面有几个线程绘制“动画”。 “动画”由具有ImageIcon的JLabel组成,在屏幕的一个区域移动到另一个区域。
现在问题是——我希望通过那些提到的线程在屏幕上展示若干个这样的“动画”。问题是——JPanel的“paint()”方法一次只能被一个线程触发,导致动画串行执行,而不是并行执行。
有什么办法可以在同一时间里让屏幕上展示数个这样的动画吗?
2个回答

5

要实现你想要的功能,使用多线程是不可能的。 Swing工具包是单线程的。正确的方法是使用可用的动画框架之一:


固定链接:Trident动画框架TimingFramework (显然有太多的编辑请求排队,无法直接编辑) - Luke Usherwood

3

Swing不是线程安全的,因此不能同时从多个线程进行UI相关操作。

采用模型-视图-控制器(MVC)模式:

  • 让所有线程更新一个(线程安全的)模型。
  • 每当模型更新时,调用repaint方法。
  • repaint()将安排UI线程调用正确的绘制方法。
  • 绘制方法应该简单地读取模型的状态,并相应地绘制组件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接