我有一些在按字母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();
}