如何以客户端监视器的最大刷新率为JPanel设置动画?

我想发生的是paintComponent仅在上次更新后才调用。我可以通过使用Timer每隔(1000/60)ms调度repaint()来做到这一点,但是我只是在猜测刷新率是多少。

实际上,我希望连续调用repaint。但是,如果我每秒调用repaint 200次并且EDT不忙,则它每秒执行paintComponent 200次,这将浪费处理器时间,并且可能会对应用程序的其他性能产生不利影响。

最佳答案

我不确定以显示器的刷新率重新粉刷是个好主意。但是,如果您要查找刷新率,则可以使用这段代码(从互联网无耻地复制)。

GraphicsEnvironment ge = GraphicsEnvironment
        .getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();

for (int i = 0; i < gs.length; i++) {
    DisplayMode dm = gs[i].getDisplayMode();

    // Get refresh rate in Hz
    int refreshRate = dm.getRefreshRate();
    if (refreshRate == DisplayMode.REFRESH_RATE_UNKNOWN) {
        // Unknown rate
    } else {
        System.out.println(refreshRate);
    }
}

关于java - 在Swing中使动画流畅,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6707168/

10-09 15:59