我有下面的代码的DatePicker:日期选择器文本框编辑不可编辑
datepicker.getEditor().addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
datepicker.show();
}
);
当在文本框单击,在弹出。 Datepicker popup open
问题是,当显示弹出窗口时,我无法在文本框中输入数字。 它是一个焦点问题吗? 感谢您的帮助。
我有下面的代码的DatePicker:日期选择器文本框编辑不可编辑
datepicker.getEditor().addEventFilter(MouseEvent.MOUSE_CLICKED, event -> {
datepicker.show();
}
);
当在文本框单击,在弹出。 Datepicker popup open
问题是,当显示弹出窗口时,我无法在文本框中输入数字。 它是一个焦点问题吗? 感谢您的帮助。
据我所知,你可以从弹出窗口中选择一个日期,但你不能在文本框中手动输入任何东西。这是editable
的问题。
在FXML中,将editable="true"
添加到TextField标记中。或者在场景构建器中选中“可编辑”复选框。我希望这样对你有帮助。
有一个很好的编码:)
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);
}}
我很抱歉,我没有具体说明。它不是HTML DatePicker,它是JavaFX。 –
Heam,好的。首先抱歉,我只是在帮你。 @KeyurBhanderi您的评论对我来说没有任何意义,但是谢谢,您应该保留自己的意见。 在FXML中,将'editable =“true”'添加到TextField标签。或者在场景构建器中选中“可编辑”复选框。 我希望能对你有所帮助。 有一个很好的编码:) –
谢谢,但可编辑=“假”是我想要做的相反。我想弹出消失当我键入东西 –