Javafx 日期选择器文本字段编辑不可编辑

Javafx 日期选择器文本字段编辑不可编辑,javafx,datepicker,Javafx,Datepicker,我有一个日期选择器,代码如下: datepicker.getEditor().addEventFilter(MouseEvent.MOUSE_CLICKED, event -> { datepicker.show(); } ); 单击文本字段时,弹出窗口出现。 问题是当弹出窗口显示时,我无法在文本字段中键入数字。 这是焦点问题吗? 谢谢您的帮助。据我所知,您可以从弹出窗口中选择日期,但不能手动在文本框中键入任何内容。这是一个可编辑的问题 在FXM

我有一个日期选择器,代码如下:

    datepicker.getEditor().addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
        datepicker.show();
    }
    );
单击文本字段时,弹出窗口出现。

问题是当弹出窗口显示时,我无法在文本字段中键入数字。 这是焦点问题吗?
谢谢您的帮助。

据我所知,您可以从弹出窗口中选择日期,但不能手动在文本框中键入任何内容。这是一个可编辑的问题

在FXML中,将
editable=“true”
添加到文本字段标记中。或者选中场景生成器中的“可编辑”复选框。我希望它能对你有所帮助

有一个很好的编码:)

导入javafx.application.application;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.DatePicker;
导入javafx.scene.control.Skin;
导入javafx.scene.input.KeyEvent;
导入javafx.scene.input.MouseEvent;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
公共类ExampleDatePicker扩展应用程序{
公共静态void main(最终字符串[]args){
发射(args);
}
私人日期选择器日期选择器;
@凌驾
公共作废开始(最终阶段初级阶段){
最终StackPane StackPane=新StackPane();
this.datepicker=new datepicker(){
@凌驾
受保护的皮肤createDefaultSkin(){
最终DatePickerSkin DatePickerSkin=(DatePickerSkin)super.createDefaultSkin();
datePickerSkin.getPopupContent().setOnKeyTyped(新的EventHandler()){
@凌驾
公共无效句柄(最终KeyEvent ke){
ExampleDatePicker.this.setText(ke.getCharacter());
}
});
返回日期Pickerskin;
}
};
this.datepicker.addEventFilter(MouseEvent.MOUSE_单击,事件->{
this.datepicker.show();
});
stackPane.getChildren().add(this.datepicker);
设置场景(新场景(stackPane,400.0,200.0));
primaryStage.show();
}
公共void setText(最终字符串){
this.datepicker.getEditor().setText(this.datepicker.getEditor().getText()+字符串);
}}

很抱歉,我没有具体说明。它不是HTML日期选择器,而是JavaFX.Heam,好的。首先对不起,我只是想帮你@你的评论对我来说没什么,但是谢谢,你应该保密。在FXML中,将
editable=“true”
添加到文本字段标记中。或者选中场景生成器中的“可编辑”复选框。我希望它能对你有所帮助。有一个很好的编码:)谢谢,但editable=“false”与我想做的相反。我想在我键入内容时弹出窗口消失对不起,首先我想的是相反的,我改变了我的评论:)(我想我今天不是个好日子:D)谢谢,这正是我需要的
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);
}}