我有一些在按字母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”键时,我的输出多次显示“开始计时器”,但是我的标签没有出现并消失。此代码需要进行哪些调整?我想念什么?感谢您的额外关注。

最佳答案

这可能是因为您连续调用setVisible(false)setVisible(true)的速度太快以至于看不到,所以您应该使用变量并在每次调用Timer的动作被修改为下一个时修改其值:

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

10-07 20:00
查看更多