当鼠标在窗格内移动时,如何修复操作效果的方法冻结



在挥杆应用中,当鼠标在框架内移动时,actionPerformed方法停止循环。我该如何解决?

这是我程序的基本布局:

ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            // main game loop
        }
}
public void paintComponent(Graphics g) {
    // render loop
}

我在这里找到了一个类似的问题。用户发现,通过降低鼠标的轮询率,它们解决了问题。但是,我无法更改Apple触控板上的轮询率,也没有提供其他解决方案。这也是一个不高的解决方案,需要用户更改设置,老实说,必须有一种更好的方法来解决问题。

基本上的问题归结为:

  • 我有没有办法从程序中更改投票率?我做了一些研究,找不到解决方案。
  • 如何禁用鼠标运动事件,以免减慢我的游戏循环?(也许也将其移动到一个单独的过程,并使用该过程在游戏循环中为逻辑提供的鼠标X和Y位置。(
  • 我可以实施什么替代解决方案来解决此问题?

我认为您需要在其中实现" ActionListener",因为当您移动时,将工作actionListener,当您单击时,它将已经是ActionEvent。另外,您可以从中获得更多:https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html和如何在JPanel中获取鼠标指针的位置(无需鼠标操作(?

最新更新