Bob*_*r02 2 java icons swing timer glasspane
我正在尝试使用GlassPane将图标闪烁给用户.我正在运行一个javax.swing.Timer基本上执行此操作:
for (int i = 0; i < 3; i++) {
frame.getGlassPane().setVisible(true);
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
//To change body of catch statement use File | Settings | File Templates.
e1.printStackTrace();
}
frame.getGlassPane().setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我睡眠EDT(计时器中的当前线程),则图标不会显示,因为在paintComponent线程进入睡眠状态之前,该方法无法完全调用.因此,当下一条指令启动时,玻璃窗格将被隐藏,结果,图标永远不会显示.有没有办法用这种(类似的)方法实现我想要的东西?
你可以用一个 javax.swing.Timer
public FlashTimer() {
javax.swing.Timer flashTimer = new javax.swing.Timer(500, new FlashHandler());
flashTimer.setCoalesce(true);
flashTimer.setRepeats(true);
flashTimer.setInitialDelay(0);
}
public class FlashHandler implements ActionListener {
private int counter;
@Override
public void actionPerformed(ActionEvent ae) {
countrol.setVisible(counter % 2 == 0);
counter++;
if (counter > 3) {
((Timer)ae.getSource()).stop();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |