我想知道如何在Java中的Swing应用程序中添加时间延迟,我使用Thread.sleep(time),并且我也使用了SwingWorker,但是它不起作用。这是我的代码的一部分:
Thread.sleep(time)
switch (state) { case 'A': if (charAux == 'A') { state = 'B'; //Here's where I'd like to add a time delay jLabel13.setForeground(Color.red); break; } else { //Here's where I'd like to add a time delay jLabel12.setForeground(Color.red); break; } }
我希望您在使用SwingWorker时能帮助我或解决我的疑问。
这是一个使用 javax.swing.Timer
javax.swing.Timer
public class TestBlinkingText { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException ex) { } catch (InstantiationException ex) { } catch (IllegalAccessException ex) { } catch (UnsupportedLookAndFeelException ex) { } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); frame.add(new BlinkPane()); frame.setSize(200, 200); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } protected static class BlinkPane extends JLabel { private JLabel label; private boolean state; public BlinkPane() { label = new JLabel("Look at me!"); setLayout(new GridBagLayout()); add(label); Timer timer = new Timer(500, new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { state = !state; if (state) { label.setForeground(Color.RED); } else { label.setForeground(Color.BLACK); } repaint(); } }); timer.setRepeats(true); timer.setCoalesce(true); timer.setInitialDelay(0); timer.start(); } } }