所以我想完成一个动作然后暂停一段时间然后完成另一个动作。我听说Thread.sleep()
并不好,因为在完成任务之前它会冻结gui或类似的东西。我知道我需要使用javax.swing.Timer
或java.util.Timer
执行一项任务,但我真的不明白如何执行。这是代码。积分是JButton
。
Credits.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e){
Credits.setVisible(false);
Oracle.setBounds(550,280,500,500);
Oracle.setFont(new java.awt.Font("Arial", Font.BOLD, 40));
Oracle.setForeground(new java.awt.Color(240,240,240));
Oracle.setText("Credits To:");
// I want to wait or pause or sleep for 5000 milliseconds
// Then Change The Icon
TimeClassAdd tcAdd = new TimeClassAdd();
timer = new Timer(1000, tcAdd);
timer.start();
timerLabel.setText("IT HAS BEGUN");
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
while (elaspedTime >= 5000) {
break;}
Oracle.setIcon(OraclePNG);
}});
答案 0 :(得分:4)
正如javax.swing.Timer
int delay = 5000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
}
};
Timer timer = new Timer(delay, taskPerformer);
timer.setRepeats(false);
timer.start();
中的示例所示:
{{1}}
提示:如果您不确定某些内容是如何工作的,请使用Java API文档。它可以为您节省很多麻烦。