[英]Stop Java swing timer when a specific value reached
你好我正在使用Java Swing计时器来点燃蜡烛。 除蜡烛几乎烧到底部的末端部分外,一切都很顺利。 当大小较小时计时器应该停止然后让我们说15 ..现在我做了一些代码,似乎我做的if / else语句完全被忽略了..有人能告诉我我做错了吗?
下面你可以看到我的代码:(ps getCandleSize方法现在带来的长度从500到10> 0然后我得到负值)
package h04SelfBurnCandle;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import h02aKaars.DrawCandle;
public class CandlePanel extends JPanel implements ActionListener {
private boolean aan = true;
private int lengte = 500;
private int x;
private int y;
private int speed = 10;
private final int WACHTTIJD = 100; // wachttijd voor de timer
public CandlePanel() {
javax.swing.Timer autoburn = new javax.swing.Timer(WACHTTIJD,this);
autoburn.start();
}
DrawCandle candle = new DrawCandle();
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
x = 10;
y = getHeight() - (lengte + 10);
for(int i=0; i < 5; i++) {
if(lengte > 15){
candle.drawCandle(g, x, y, lengte, aan);
}
else {
candle.drawCandleBurned(g, x, y, lengte);
}
x = x + 70;
System.out.println(lengte);
}
}
public int getCandleSize() {
do {
lengte -= speed;
}
while(lengte > 15);
return lengte;
}
@Override
public void actionPerformed(ActionEvent e) {
getCandleSize();
//System.out.println(lengte);
repaint();
}
}
当getCandleSize()
被调用时,它会导致lengte立即减少到10.你想要的更像是:
public int getCandleSize() {
if(lengte > 15)
lengte -= speed;
else
autoburn.stop();
return lengte;
}
注意:您需要将autoburn从本地成员更改为类成员。
绘图的逻辑应该在Swing Timer的ActionListener代码中。 你应该在actionPerformed中改变蜡烛的大小。 如果大小小于最小值,则在actionPerformed中,停止Timer。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.