init
This commit is contained in:
commit
2785236694
122
src/sample/Controller.java
Normal file
122
src/sample/Controller.java
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
package sample;
|
||||||
|
|
||||||
|
import javafx.application.Platform;
|
||||||
|
import javafx.event.ActionEvent;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Controller {
|
||||||
|
public Button btnstart;
|
||||||
|
public Button btnpause;
|
||||||
|
public Button btnstop;
|
||||||
|
public Label timelabel;
|
||||||
|
public Button btnresume;
|
||||||
|
public TextField textinput;
|
||||||
|
public TextField entimefield;
|
||||||
|
|
||||||
|
private long starttime = new Date().getTime();
|
||||||
|
private long endtime;
|
||||||
|
private long warningtime;
|
||||||
|
|
||||||
|
private Thread curr = null;
|
||||||
|
private long pausetime = new Date().getTime();
|
||||||
|
private DecimalFormat format = new DecimalFormat("00");
|
||||||
|
|
||||||
|
private final Runnable timer = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
while (true) {
|
||||||
|
long currtime = new Date().getTime() - starttime;
|
||||||
|
|
||||||
|
int sec = (int) currtime / 1000;
|
||||||
|
int min = (int) currtime / (1000 * 60);
|
||||||
|
int ms = (int) currtime - (sec * 1000 + min * (1000 * 60));
|
||||||
|
Platform.runLater(() -> timelabel.setText(format.format(min) + ":" + format.format(sec) + ":" + format.format((int) ((float) ms / 10) + 0.5)));
|
||||||
|
|
||||||
|
if (warningtime < currtime) {
|
||||||
|
timelabel.setStyle("-fx-background-color: #FF0000");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endtime < currtime) {
|
||||||
|
btnstart.setDisable(false);
|
||||||
|
btnstop.setDisable(true);
|
||||||
|
|
||||||
|
curr.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public Controller() {
|
||||||
|
Platform.runLater(() -> {
|
||||||
|
btnstop.setDisable(true);
|
||||||
|
btnpause.setDisable(true);
|
||||||
|
btnresume.setDisable(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startclick(ActionEvent actionEvent) {
|
||||||
|
btnstart.setDisable(true);
|
||||||
|
btnpause.setDisable(false);
|
||||||
|
btnstop.setDisable(false);
|
||||||
|
|
||||||
|
starttime = new Date().getTime();
|
||||||
|
|
||||||
|
// parse warning field
|
||||||
|
String inp = textinput.getText();
|
||||||
|
int mins = Integer.parseInt(inp.substring(0, 2));
|
||||||
|
int secs = Integer.parseInt(inp.substring(3, 5));
|
||||||
|
int mss = Integer.parseInt(inp.substring(6, 8));
|
||||||
|
warningtime = mss + secs * 1000 + mins * 60 * 1000;
|
||||||
|
|
||||||
|
// parse end field
|
||||||
|
String inpe = entimefield.getText();
|
||||||
|
int mine = Integer.parseInt(inpe.substring(0, 2));
|
||||||
|
int sece = Integer.parseInt(inpe.substring(3, 5));
|
||||||
|
int mse = Integer.parseInt(inpe.substring(6, 8));
|
||||||
|
endtime = mse + sece * 1000 + mine * 60 * 1000;
|
||||||
|
|
||||||
|
timelabel.setStyle("-fx-background-color: #ebebeb");
|
||||||
|
|
||||||
|
curr = new Thread(timer);
|
||||||
|
curr.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void pauseclick(ActionEvent actionEvent) {
|
||||||
|
btnpause.setDisable(true);
|
||||||
|
btnresume.setDisable(false);
|
||||||
|
|
||||||
|
pausetime = new Date().getTime();
|
||||||
|
curr.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopclick(ActionEvent actionEvent) {
|
||||||
|
btnstart.setDisable(false);
|
||||||
|
btnstop.setDisable(true);
|
||||||
|
btnpause.setDisable(true);
|
||||||
|
btnresume.setDisable(true);
|
||||||
|
|
||||||
|
curr.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resumeclick(ActionEvent actionEvent) {
|
||||||
|
btnresume.setDisable(true);
|
||||||
|
btnpause.setDisable(false);
|
||||||
|
|
||||||
|
starttime += (new Date().getTime() - pausetime);
|
||||||
|
|
||||||
|
curr = new Thread(timer);
|
||||||
|
curr.start();
|
||||||
|
}
|
||||||
|
}
|
24
src/sample/Main.java
Normal file
24
src/sample/Main.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package sample;
|
||||||
|
|
||||||
|
import javafx.application.Application;
|
||||||
|
import javafx.fxml.FXMLLoader;
|
||||||
|
import javafx.scene.Parent;
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
public class Main extends Application {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start(Stage primaryStage) throws Exception{
|
||||||
|
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
|
||||||
|
primaryStage.setTitle("Stoppuhr");
|
||||||
|
primaryStage.setResizable(false);
|
||||||
|
primaryStage.setScene(new Scene(root, 300, 500));
|
||||||
|
primaryStage.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
launch(args);
|
||||||
|
}
|
||||||
|
}
|
22
src/sample/sample.fxml
Normal file
22
src/sample/sample.fxml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.control.*?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
<?import javafx.scene.text.*?>
|
||||||
|
|
||||||
|
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="313.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
|
||||||
|
<children>
|
||||||
|
<Button fx:id="btnstart" layoutX="31.0" layoutY="34.0" mnemonicParsing="false" onAction="#startclick" text="Start" />
|
||||||
|
<Button fx:id="btnpause" layoutX="90.0" layoutY="34.0" mnemonicParsing="false" onAction="#pauseclick" text="Pause" />
|
||||||
|
<Button fx:id="btnstop" layoutX="240.0" layoutY="34.0" mnemonicParsing="false" onAction="#stopclick" text="Stop" />
|
||||||
|
<Label fx:id="timelabel" layoutX="31.0" layoutY="95.0" text="00:00:00">
|
||||||
|
<font>
|
||||||
|
<Font size="52.0" />
|
||||||
|
</font></Label>
|
||||||
|
<Button fx:id="btnresume" layoutX="157.0" layoutY="34.0" mnemonicParsing="false" onAction="#resumeclick" text="Resume" />
|
||||||
|
<TextField fx:id="textinput" layoutX="62.0" layoutY="200.0" text="02:50:89" />
|
||||||
|
<TextField fx:id="entimefield" layoutX="63.0" layoutY="280.0" text="05:00:00" />
|
||||||
|
<Label layoutX="63.0" layoutY="176.0" text="Warningtime" />
|
||||||
|
<Label layoutX="63.0" layoutY="257.0" text="Endtime" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
Loading…
Reference in New Issue
Block a user