2017-06-08 203 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); 
}}