2017-06-08 332 views

回答

-1

据我所知,你可以从弹出窗口中选择一个日期,但你不能在文本框中手动输入任何东西。这是editable的问题。

在FXML中,将editable="true"添加到TextField标记中。或者在场景构建器中选中“可编辑”复选框。我希望这样对你有帮助。

有一个很好的编码:)

+0

我很抱歉,我没有具体说明。它不是HTML DatePicker,它是JavaFX。 –

+0

Heam,好的。首先抱歉,我只是在帮你。 @KeyurBhanderi您的评论对我来说没有任何意义,但是谢谢,您应该保留自己的意见。 在FXML中,将'editable =“true”'添加到TextField标签。或者在场景构建器中选中“可编辑”复选框。 我希望能对你有所帮助。 有一个很好的编码:) –

+0

谢谢,但可编辑=“假”是我想要做的相反。我想弹出消失当我键入东西 –

0
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); 
}}