簡體   English   中英

達到特定值時停止Java swing計時器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM