1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| package mytimer2;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javafx.animation.Animation.Status;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.text.Font;
import javafx.util.Duration;
public class FXMLDocumentController implements Initializable {
int min,sec,mintim,min1,sec1;
String str;
Timeline tl;
Status st;
Task tk;
@FXML
private Label label;
@FXML
Spinner spinner;
@FXML
private void handleButtonAction(ActionEvent event) throws Exception {
mintim=(int) spinner.getValue();
min1=mintim;
decompte();
label.setText(str);
}
@Override
public void initialize(URL url, ResourceBundle rb) {
List<Integer> list=new ArrayList<>();
ObservableList<Integer> oli = FXCollections.observableList(list);
oli.addAll(0,1,5,10,15,20,25,30,35,40,45,50,55,60);
SpinnerValueFactory<Integer> svf=new SpinnerValueFactory.ListSpinnerValueFactory<>(oli);
spinner.setValueFactory(svf);
Spinner<Integer> lspin=new Spinner<>(oli);
sec1=60;
label.setFont(new Font(30.0));
}
public String calcul(int mintim){
String str1 ,str2,str3,str4;
String str;
if(min1==mintim){
min1--;
str2=Integer.toString(min1);
if(min1<10)
str1="0"+str2+":";
else
str1=str2+":";
}else{
sec1--;
str2=Integer.toString(min1);
if(min1<10)
str1="0"+str2+":";
else
str1=str2+":";
}
str3=Integer.toString(sec1);
if(sec1<10)
str4="0"+str3;
else
str4=str3;
if(sec1==0){
if(min1>0){
min1--;
sec1=60;
str2=Integer.toString(min1);
str1="0"+str2+":";
str4=Integer.toString(sec1);
}else{
str1="00"+":";
str4="00";
}
}
str=str1+str4;
return str;
}
public void decompte()throws Exception{
label.setText(calcul(mintim));
runLater(Duration.millis(1000), () -> {
label.setText(calcul(mintim));
if(min1==0&&sec1==0){
tl.stop();
playmusic();
}
});
}
public void playmusic(){
Media media;
MediaPlayer mp;
media=new Media(new File("AudioTrack16.mp3").toURI().toString());
mp=new MediaPlayer(media);
mp.play();
}
private Timeline runLater(Duration delay, Runnable action) {
tl = new Timeline(new KeyFrame(delay, ae -> action.run()));
// tl.cycleCountProperty().setValue(mintim*60);
tl.cycleCountProperty().setValue(Timeline.INDEFINITE);
tl.play();
return tl;
}
} |