मेरे पास यह कोड है जो 10 नीचे से उलटी गिनती प्रदर्शित करता है:
हालांकि शून्य पर पहुंचने के बाद भी यह ऋणात्मक संख्याओं में गिना जाता है। शून्य पर पहुंचने के बाद मैं इसे कैसे रोकूं? ताकि लेबल पर प्रदर्शित होने वाला अंतिम टेक्स्ट 0
हो।
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.util.Duration;
public class TestCountdown extends Application {
private GridPane gridPane;
private Scene scene;
private Button button = new Button("Start");
private CountdownTimer timer = new CountdownTimer();
@Override
public void start(Stage applicationStage) {
gridPane = new GridPane();
scene = new Scene(gridPane);
gridPane.add(timer, 0, 1);
gridPane.add(button, 0, 2);
timer.setStyle("-fx-font-size: 50;");
button.setStyle("-fx-font-size: 50;");
button.setOnAction(actionEvent -> timer.start());
applicationStage.setScene(scene);
applicationStage.setFullScreen(true);
applicationStage.show();
}
}
class CountdownTimer extends Label {
private int i = 10;
private boolean started;
public CountdownTimer() {
setText("10");
}
public void start() {
if (started) {
return;
}
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0),
event -> {
setText(String.valueOf(i--));
if (i <= 0) {
timeline.stop(); //ERROR: variable timeline might not have been initialized
}
}),
new KeyFrame(Duration.seconds(1)));
timeline.setOnFinished(event -> System.out.println("Done!"));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
started = true;
}
}
संपादित करें:
संपादित करें: उपरोक्त कोड अपडेट किया गया है:
if (i <= 0) {
timeline.stop(); //ERROR: variable timeline might not have been initialized
}
अगर-ब्लॉक देता है
ERROR: variable timeline might not have been initialized
त्रुटि
1
parsecer
7 पद 2020, 01:39
1 उत्तर
सबसे बढ़िया उत्तर
कंस्ट्रक्टर में जोड़ने के बजाय, टाइमलाइन शुरू होने के बाद KeyFrames जोड़ने का प्रयास करें।
Timeline timeline = new Timeline();
KeyFrame kf = new KeyFrame(Duration.seconds(0),
event -> {
setText(String.valueOf(i--));
if (i <= 0) {
timeline.stop();
}
});
timeline.getKeyFrames().addAll(kf, new KeyFrame(Duration.seconds(1)));
4
Sai Dandem
7 पद 2020, 02:56
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।