在javafx中单击日期选择器时禁用弹出日历

在javafx中单击日期选择器时禁用弹出日历,java,javafx,Java,Javafx,我正在javafx上开发程序,我使用datepicker。我想在单击日历图像时禁用弹出式日历。不要建议只使用textfield而不是datepicker并解析它不使用textfield的原因是什么??这是一个严格的要求吗?如果不是,您可以简单地在datePicker textfield的顶部添加一个textfield。并声明一个arraylist来存储用户从textfield输入的日期。如果用户从datePicker中选择了一个特定的日期,并且该日期适合arraylist中的一个日期(以查看fi

我正在javafx上开发程序,我使用datepicker。我想在单击日历图像时禁用弹出式日历。不要建议只使用textfield而不是datepicker并解析它

不使用textfield的原因是什么??这是一个严格的要求吗?如果不是,您可以简单地在datePicker textfield的顶部添加一个textfield。并声明一个arraylist来存储用户从textfield输入的日期。如果用户从datePicker中选择了一个特定的日期,并且该日期适合arraylist中的一个日期(以查看fit是否只是循环遍历字符串arraylist中的所有内容并进行.equal比较),则将其显示在标签上。代码如下:

@Override
public void start(Stage primaryStage) {
    try {
         String pattern = "yyyy-dd-MM";
         ArrayList<String> al = new ArrayList<String>();
         Pane pane = new Pane();
         TextField tf = new TextField();
         Label lb = new Label();
         DatePicker datePicker = new DatePicker();

         tf.setPromptText(pattern);
         lb.setLayoutX(200);
         lb.setLayoutY(250);

         lb.setText("To know where the label is");

         Scene scene = new Scene(pane, 400, 400);
         primaryStage.setScene(scene);


         pane.getChildren().addAll(datePicker,tf,lb);

         primaryStage.show();

         datePicker.setOnAction(event -> {
                for(int x=0;x<al.size();x++)
                {
                     System.out.println(al.get(x));
                     System.out.println(datePicker.getValue().toString());

                    if(datePicker.getValue().toString().equals( al.get(x).toString()))
                    {
                        lb.setText("is a checked date");
                    }
                }

            });
         tf.setOnAction(event -> {
             al.add(tf.getText());
             System.out.println(al.get(0).toString());
         });

    } catch(Exception e) {
        e.printStackTrace();
    }
@覆盖
公共无效开始(阶段primaryStage){
试一试{
字符串模式=“yyyy-dd-MM”;
ArrayList al=新的ArrayList();
窗格=新窗格();
TextField tf=新的TextField();
标签lb=新标签();
DatePicker DatePicker=新的日期选择器();
tf.setPrompText(模式);
lb.setLayoutX(200);
lb.setLayoutY(250);
lb.setText(“知道标签在哪里”);
场景=新场景(窗格,400400);
初级阶段。场景(场景);
pane.getChildren().addAll(日期选择器、tf、lb);
primaryStage.show();
datePicker.setOnAction(事件->{
对于(int x=0;x{
al.add(tf.getText());
System.out.println(al.get(0.toString());
});
}捕获(例外e){
e、 printStackTrace();
}

Button btn=new Button();btn.setMinSize(50100);btn.setOnAction(new EventHandler(){@Override public void handle(ActionEvent事件){LocalDate date2=dP2.getValue();dayLabel2.setText(“+date2.getdayofmon());monthLabel2.setText(“+date2.getMonthValue());yearLabel2.setText(”+date2.getYear();}});通常,我想让用户使用键盘输入日期(而不是使用日历,当您单击日历图像时会弹出日历)。按下按钮时,我想在datepicker文本区域中写入值。您可以编辑您的帖子,而不必在评论中写入太多代码
datePicker.setEditable(false);

datePicker.setOnMouseClicked(e -> {
     if(!datePicker.isEditable())
         datePicker.hide();
});