datepicker textfield编辑不可编辑



我有一个带有以下代码的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标签中。或在场景构建器中检查"可编辑"复选框。我希望这可以为您提供帮助。

有一个不错的编码:)