我有一些标签,当按下字母 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/