[英]How to use Swing Timer ActionListener
So I wanted to complete an action then pause for a certain amount of time then complete another action. 因此,我想完成一个动作,然后暂停一段时间,然后再执行另一个动作。 I heard
Thread.sleep()
isn't good because it freezes the gui or something like that before completing the task. 我听说
Thread.sleep()
不好,因为它在完成任务之前冻结了gui或类似内容。 I know I need to use javax.swing.Timer
or java.util.Timer
for one execution task but I really don't understand how. 我知道我需要为一个执行任务使用
javax.swing.Timer
或java.util.Timer
,但是我真的不知道如何。 Here's the code. 这是代码。 Credit is a
JButton
. 信誉是一个
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);
}});
As the example in the Java API docs for javax.swing.Timer
shows: 如
javax.swing.Timer
的Java API文档中的示例所示:
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();
Hint: Use the Java API docs if you're unsure how something works. 提示:如果不确定某些方法,请使用Java API文档。 It saves you a lot of trouble.
它为您省去了很多麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.