【问题标题】:Java: Using multiple Threads to paint simultaniously on a JPanelJava:使用多个线程在 JPanel 上同时绘制
【发布时间】:2010-05-21 15:28:35
【问题描述】:

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

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

知道如何同时在屏幕上显示多个这样的动画吗?

【问题讨论】:

    标签: java swing multithreading


    【解决方案1】:

    不可能使用多个线程来做你想做的事。 Swing Toolkit 是单线程的 .正确的做法是使用可用的动画框架之一:

    【讨论】:

    【解决方案2】:

    Swing 不是线程安全的,因此它根本不支持同时从多个线程执行与 UI 相关的操作。

    选择模型-视图-控制器 (MVC) 模式:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多