我有一个带有以下代码的datepicker:
datepicker.getEditor().addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
datepicker.show();
}
);
单击Textfield时,会出现弹出窗口。datepicker弹出式
问题是,显示弹出窗口时我无法在文本字段中输入数字。这是重点问题吗?感谢您的帮助。
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Skin;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ExampleDatePicker extends Application {
public static void main(final String[] args) {
launch(args);
}
private DatePicker datepicker;
@Override
public void start(final Stage primaryStage) {
final StackPane stackPane = new StackPane();
this.datepicker = new DatePicker() {
@Override
protected Skin<?> createDefaultSkin() {
final DatePickerSkin datePickerSkin = (DatePickerSkin) super.createDefaultSkin();
datePickerSkin.getPopupContent().setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(final KeyEvent ke) {
ExampleDatePicker.this.setText(ke.getCharacter());
}
});
return datePickerSkin;
}
};
this.datepicker.addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
this.datepicker.show();
});
stackPane.getChildren().add(this.datepicker);
primaryStage.setScene(new Scene(stackPane, 400.0, 200.0));
primaryStage.show();
}
public void setText(final String string) {
this.datepicker.getEditor().setText(this.datepicker.getEditor().getText() + string);
}}
据我了解,您可以从弹出窗口中选择一个日期,但是您不能手动在文本框中输入任何内容。这是editable
问题。
在FXML中,将editable="true"
添加到您的TextField标签中。或在场景构建器中检查"可编辑"复选框。我希望这可以为您提供帮助。
有一个不错的编码:)