JAVA SWING-使用SWING计时器创建动画
我正在尝试设置一个程序,使用户可以在单击“下一步”和“上一步”按钮时显示转换。按下“下一步”时,摆动计时器将触发并启动动画。当过渡时,应该有一个标志表明它处于过渡期。摆动计时器应每十分之一秒触发一次,基本上持续1秒JAVA SWING-使用SWING计时器创建动画,java,swing,timer,flags,cardlayout,Java,Swing,Timer,Flags,Cardlayout,我正在尝试设置一个程序,使用户可以在单击“下一步”和“上一步”按钮时显示转换。按下“下一步”时,摆动计时器将触发并启动动画。当过渡时,应该有一个标志表明它处于过渡期。摆动计时器应每十分之一秒触发一次,基本上持续1秒 public class guiCreation { static Timer timer; static boolean flag = false; private static void guiInterface() { next.addActionListener(new A
public class guiCreation {
static Timer timer;
static boolean flag = false;
private static void guiInterface() {
next.addActionListener(new ActionListener(){
timer = new Timer(1000, this);
public void actionPerformed(ActionEvent e){
nextGest();
}
});
//should go to the next tab
previous.addActionListener(new ActionListener(){
//if the list gets to the beginning, disable button
public void actionPerformed(ActionEvent e){
prevGest();
}
});
}
public static void nextGest() {
timer.start();
previous.setEnabled(true);
next.setEnabled(true);
//if the list gets to the end, disable button
if (cardLayout.isNextCardAvailable()) {
status.setText(" Next button has been clicked");
//System.out.println("This is the" + size);
cardLayout.next(cardPanel);
next.setEnabled(cardLayout.isNextCardAvailable());
}
}
public static void prevGest() {
if (cardLayout.isPreviousCardAvailable()) {
timer.start();
next.setEnabled(true);
previous.setEnabled(true);
status.setText(" Previous button has been clicked");
cardLayout.previous(cardPanel);
previous.setEnabled(cardLayout.isPreviousCardAvailable());
}
}
}
此:“摆动计时器应每十分之一秒触发一次…”
--与此不一致:计时器=新计时器(1000,此)代码>计时器每秒触发一次,而不是每10秒触发一次
相反,你应该:
- 创建一个新的计时器(100,…)
,每10秒触发一次
((Timer)e.getSource()).Stop()停止计时器代码>经过1整秒后
.isRunning()
。e、 例如,如果(timer!=null&&timer.isRunning()){
--则动画正在继续- 离开静态世界,进入实例世界。你正在用Java编程,这是一种从一开始就使用OOPs的语言,你不想与OOPs范式抗争
- 此:
“摆动计时器应每十分之一秒触发一次…”
--不同意此:计时器=新计时器(1000,此);
您的计时器每秒钟触发一次,而不是每十分之一秒
相反,你应该:
- 创建一个新的计时器(100,…),每10秒触发一次
- 在实例字段中存储计时器开始时的开始时间(可能在按钮的ActionListener中这样做)
- 在计时器的ActionListener中,获取当前毫秒数,并使用它检查经过的时间
- 经过一整秒钟后,通过
停止计时器((Timer)e.getSource()).Stop();
- 不需要标志,因为您只需检查计时器是否为空,以及它是否为
。例如,.isRunning()
,则动画将继续如果(Timer!=null&&Timer.isRunning()){
- 离开静态世界,进入实例世界。你正在用Java编程,这是一种从一开始就使用OOPs的语言,你不想与OOPs范式抗争