Java 如何制作通用FPS计数器?

Java 如何制作通用FPS计数器?,java,swing,frame-rate,Java,Swing,Frame Rate,我已经搜索了这些问题,我得到了你放在游戏循环中的正常FPS计数器。 但我想做的是一个通用的FPS计数器,它与任何游戏一起运行并显示其FPS。 我的想法是制作一个透明的JFrame,带有大JLabel,并将它们添加到屏幕的任何角落。然后重写绘制方法,无论何时调用它,这意味着绘制了一个新帧,计算帧重新绘制的频率,并将其显示在JLabel中,但它似乎不起作用,因为绘制方法被调用了一次或两次,然后就不再调用它了。绘制方法只是被调用而已需要的时候。因此,如果JFrame上没有任何更新,它将不会被调用。这就

我已经搜索了这些问题,我得到了你放在游戏循环中的正常FPS计数器。
但我想做的是一个通用的FPS计数器,它与任何游戏一起运行并显示其FPS。


我的想法是制作一个透明的
JFrame
,带有大
JLabel
,并将它们添加到屏幕的任何角落。然后重写绘制方法,无论何时调用它,这意味着绘制了一个新帧,计算帧重新绘制的频率,并将其显示在
JLabel


中,但它似乎不起作用,因为绘制方法被调用了一次或两次,然后就不再调用它了。

绘制方法只是被调用而已需要的时候。因此,如果JFrame上没有任何更新,它将不会被调用。这就是为什么它在执行两次左右后停止。
因此,如果您只想知道JFrame被绘制了多少次,并且您可以访问代码库本身,那么您的aproach是正确的。但是,由于您希望在不接触帧本身代码的情况下限制另一帧的fps,因此无法在此场景中添加fps计数器。但是您可以使用JNI来实现这一点。

发布一个您尝试过的代码示例。为了更快地获得更好的帮助,请发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。我并不完全理解您的意思。但我希望程序运行,然后当我运行一个完全独立于FPS程序的游戏时,它将计算其FPS。FPS是每秒帧数的速率。它绑定在框架上,不能与程序分离。如果你在做像游戏这样的事情,你需要内在地计算它。因此,在重绘方法中,您应该计算FPS。但是因为你的屏幕很可能没有改变的东西,JPanel不会重新绘制,直到你在JPanel中改变一些东西。所以像worksFRAPS这样的程序不会显示游戏的fps。它显示录制的fps。因此,您同样无法获得其他帧的fps。