带逗号的自定义日期选择器输入文本
Custom Datepicker Input Text with comma
我想在 Javafx8 中为 DatePicker 输入自定义格式。
如果我输入例如“21,2,15” by textinput 我希望日期选择器将本地日期设置为 2015 年 2 月 21 日。
我可以将字符串分成三部分,然后简单地将三个 INT 添加到一个新的本地日期,但是 我如何访问我的输入文本 before/while 按回车键?
第二种可能性:捕获逗号 (,) 并立即将其转换为点 (.),因此在键入“21,2,15”时,它会转换为“21.2.15”,并在按回车后使用此格式,DatePicker 添加 2015- 02-21 作为本地日期。
那么有没有机会输入 "d,m,yy" 的日期?
指定一个 converter
for the DatePicker
and use an appropriate DateTimeFormatter
来解析和格式化日期。
SSCEE:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.StringConverter;
public class DatePickerWithCustomFormat extends Application {
@Override
public void start(Stage primaryStage) {
DatePicker datePicker = new DatePicker();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d,M,y");
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override
public String toString(LocalDate date) {
if (date == null) {
return "" ;
}
return formatter.format(date);
}
@Override
public LocalDate fromString(String string) {
if (string == null || string.isEmpty()) {
return null ;
}
return LocalDate.from(formatter.parse(string));
}
});
datePicker.valueProperty().addListener((obs, oldDate, newDate) ->
System.out.println("Selected "+newDate));
primaryStage.setScene(new Scene(new StackPane(datePicker), 375, 120));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我想在 Javafx8 中为 DatePicker 输入自定义格式。 如果我输入例如“21,2,15” by textinput 我希望日期选择器将本地日期设置为 2015 年 2 月 21 日。 我可以将字符串分成三部分,然后简单地将三个 INT 添加到一个新的本地日期,但是 我如何访问我的输入文本 before/while 按回车键? 第二种可能性:捕获逗号 (,) 并立即将其转换为点 (.),因此在键入“21,2,15”时,它会转换为“21.2.15”,并在按回车后使用此格式,DatePicker 添加 2015- 02-21 作为本地日期。 那么有没有机会输入 "d,m,yy" 的日期?
指定一个 converter
for the DatePicker
and use an appropriate DateTimeFormatter
来解析和格式化日期。
SSCEE:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.StringConverter;
public class DatePickerWithCustomFormat extends Application {
@Override
public void start(Stage primaryStage) {
DatePicker datePicker = new DatePicker();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d,M,y");
datePicker.setConverter(new StringConverter<LocalDate>() {
@Override
public String toString(LocalDate date) {
if (date == null) {
return "" ;
}
return formatter.format(date);
}
@Override
public LocalDate fromString(String string) {
if (string == null || string.isEmpty()) {
return null ;
}
return LocalDate.from(formatter.parse(string));
}
});
datePicker.valueProperty().addListener((obs, oldDate, newDate) ->
System.out.println("Selected "+newDate));
primaryStage.setScene(new Scene(new StackPane(datePicker), 375, 120));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}