【问题标题】:Two simultaneous mouse listeners disrupting each other in SwingSwing 中两个同时的鼠标监听器互相干扰
【发布时间】:2012-01-29 22:10:23
【问题描述】:

我的问题是关于如何使用 Swing 处理同时发生的鼠标事件。

MouseMotionListener 和 MouseListener 都被添加到 JPanel 之后。

我有一个对象,它的旋转根据鼠标指针位置的 x 和 y 坐标进行(由 MouseMotionListener 的 mouseMoved 方法实现)。

我还有一个 MouseListener,它根据实现的 mouseReleased() 方法执行其操作。

对象正在根据 MouseMotionListener 整齐地旋转,但是当按下鼠标按钮时会出现问题。随着鼠标的移动,旋转停止,显然 JPanel 现在正在等待执行 mouseReleased() 方法。

任何想法使这些事件同时发生的最佳方法是什么,以便根据鼠标指针坐标的旋转和根据 mouseReleased() 的操作可以同时执行而不会相互干扰?

【问题讨论】:

  • 发布您的代码将有助于诊断问题。但是,mouseReleased 方法在您释放鼠标按钮之前不会执行。 JPanel 不会等你松开按钮。你在用mousePressed 方法做些什么吗?
  • mousePressed 只是被覆盖了,但是将来我还必须为其添加一些功能。这就是为什么我需要添加一些并发来处理任务
  • 也许你不应该在 JPanel 中简单地(没有按下按钮)鼠标时进行旋转,但只有当其中一个鼠标按钮被按住时。

标签: java swing mouselistener


【解决方案1】:

一篇关于摆动线程细节的旧文章:

http://www.javaworld.com/javaworld/jw-08-2007/jw-08-swingthreading.html?page=1

值得一读的原因和方法。

【讨论】:

    【解决方案2】:

    如果您想在应用程序中同时执行两个操作,您将在不同的线程中执行 当你需要在 swing 的不同线程中做某事时 - 你应该使用SwingWorker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      相关资源
      最近更新 更多