0
我正在開發應用程序JavaFx其中我正在使用jfoenix庫和Java 8時間。在我的應用程序中,我有兩個TimePickers和一個TextField。所有節點最初設置爲11:00這樣的:JavaFx:如何根據差異b/w兩次更新小時?
我要的是什麼的TimePickers之間的差異,讓說,如果時間1是9:00 AM and Time2 is 11:00 AM,所以區別將是,所以添加2小時到這是在的TextField即11:00已經存在的值,所以它會成爲13:00並且如果用戶改變時間2到10:上午12時所以現在差將1所以添加1小時到的TextField的初始值這是11:00(未爲新的值,它是目前13:00)並使其到12:00。請幫助我,我該如何實現。
在我目前的代碼中,問題在於它是基於新值更新(例如,如果是13:00)而不是基於初始值(例如,是11:00),如果當前值是13:00而不同的是1,所以它使它14:00,而不是12:00: -
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import com.jfoenix.controls.JFXTimePicker;
import javafx.beans.value.ChangeListener;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
public class SampleController {
@FXML
JFXTimePicker tp1;
@FXML
JFXTimePicker tp2;
@FXML
TextField tf1;
public void initialize() {
tp1.setValue(LocalTime.of(11, 00));
tp2.setValue(LocalTime.of(11, 00));
tf1.setText("11:00");
tf1.setEditable(false);
ChangeListener<Object> listener = (obs, oldValue, newValue) ->
update(tp1.getValue().toString(), tp2.getValue().toString(), tf1.getText(), tf1);
tp1.valueProperty().addListener(listener);
tp2.valueProperty().addListener(listener);
}
public void update (String t1, String t2, String tf, TextField textField) {
DateTimeFormatter format = DateTimeFormatter.ofPattern("HH:mm");
LocalTime parseTime1 = LocalTime.parse(t1,format);
LocalTime parseTime2 = LocalTime.parse(t2,format);
long diffT1AndT2 = ChronoUnit.MINUTES.between(parseTime1, parseTime2);
LocalTime parseTime3InTextField = LocalTime.parse(tf,format);
LocalTime add = parseTime3InTextField.plusMinutes(diffT1AndT2);
tf1.setText(add.toString());
}
}