Java swing-鼠标在主窗口外时,应用程序会丢帧

时间:2018-07-02 18:35:06

标签: java swing

我使用Swing制作了一个秒表。我在JFrame上贴了标签,并使用计时器每10毫秒更改其文本。但是,仅当鼠标光标位于主窗体上时,该应用程序才能正常运行。当我将鼠标移到外面时,帧速率会缓慢下降到2 FPS-看起来像是Swing中的怪异优化。

将内容打印到System.out中,我发现计时器仍然每10毫秒触发一次,并且JLabel也每10毫秒重新绘制一次-我不知道在哪里寻找问题的根源。

这是演示问题的最小示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test extends JFrame {

    public static void main(String[] args) {

        Test main = new Test();
        main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final JLabel lbl = new JLabel("test");
        lbl.setPreferredSize(new Dimension(150, 50));

        new Timer(10, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                lbl.setText(Long.toString(System.currentTimeMillis()));
            }
        }).start();

        main.setLayout(new BorderLayout());
        main.add(lbl);
        main.pack();
        main.setLocationRelativeTo(null);
        main.setVisible(true);

    }

}

当鼠标光标移到窗口上方时,标签会平滑更新,但是一旦光标离开窗口,标签就会每秒更新两次。

更新

JDK 1.8.0_121会重现该问题,而1.7.0_75不会。这是一个JDK错误吗?我可以在不降级到Java 7的情况下解决它吗?

0 个答案:

没有答案
相关问题