java - 计时器适用于 println 但不适用于使用 java 的标签

标签 java swing timer

我有一些标签,当按下字母 a 时它们会变得可见。

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
    // TODO add your handling code here:
    if(evt.getKeyCode()==KeyEvent.VK_A){
        jLabel7.setVisible(true);            
        jLabel8.setVisible(true);
        jLabel9.setVisible(true);
        myBlink();
    }

我在计时器 myBlink() 上有 Label8

public void myBlink()
    {
    new Timer(1000, new ActionListener() {
        public void actionPerformed(ActionEvent e) {                    
            System.out.println("begin");
            jLabel8.setVisible(false);
            jLabel8.setVisible(true);
            System.out.println("Timer");
        }
    }).start();
    }

我已经放置了 printlns 来查看计时器是否开始和结束,当我按下“a”键时,我的输出多次显示 begin Timer,但我的标签没有出现也没有消失。这段代码需要什么调整?我错过了什么?感谢您的额外关注。

最佳答案

这可能是因为你先后调用了setVisible(false)setVisible(true),速度太快看不到,你应该使用一个变量并修改它每次 Timer 的 Action 被调用时的值如下:

public void myBlink()
{
    new Timer(1000, new ActionListener() {
        boolean visible = true;
        public void actionPerformed(ActionEvent e) {
            jLabel8.setVisible(visible = !visible);
        }
    }).start();
}

关于java - 计时器适用于 println 但不适用于使用 java 的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499925/

相关文章:

java - 加速谷歌闭包编译器 jar

java - Spring:在上下文初始化之前显示静态页面以输入数据源密码

java - 我如何使用根目录 System.getProperty ("user.home")

Java Timer.Schedule(无限循环)停止运行

javascript - 从 javascript 计时器调用非全局函数

java - DecimalFormat 小数位数

swing - miglayout:无法右对齐工作

java - 移除对可编辑 jtable 单元格的关注

java - 我可以将 MouseMotionListener 添加到 Java 中的另一个线程吗?

c# - 启用 System.Timers.Timer 和 GarbageCollector