当前位置: 首页 > 知识库问答 >
问题:

返回null的JavaFX DatePicker

戎洛华
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<SplitPane dividerPositions="0.22122571001494767" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="395.0" prefWidth="671.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.UserMainController">
  <items>
    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="398.0" prefWidth="175.0">
         <children>
            <Button fx:id="logOut" layoutX="35.0" layoutY="261.0" mnemonicParsing="false" onAction="#logOutButtonClicked" text="Log Out">
               <font>
                  <Font size="15.0" />
               </font>
            </Button>
            <Label layoutX="52.0" layoutY="44.0" text="user:">
               <font>
                  <Font size="19.0" />
               </font>
            </Label>
            <Label fx:id="username" layoutX="16.0" layoutY="76.0" prefHeight="32.0" prefWidth="116.0" textAlignment="CENTER">
               <font>
                  <Font size="25.0" />
               </font>
            </Label>
         </children></AnchorPane>
    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="442.0" prefWidth="457.0">
         <children>
            <ListView fx:id="albumListView" layoutY="-2.0" prefHeight="335.0" prefWidth="292.0" />
            <Button fx:id="deleteButton" layoutX="115.0" layoutY="348.0" mnemonicParsing="false" onAction="#deleteButtonClicked" prefHeight="31.0" prefWidth="68.0" text="Delete">
               <font>
                  <Font size="15.0" />
               </font>
            </Button>
            <AnchorPane layoutX="292.0" prefHeight="335.0" prefWidth="169.0">
               <children>
                  <Label fx:id="albums" layoutX="73.0" layoutY="44.0" text="Albums">
                     <font>
                        <Font size="22.0" />
                     </font>
                  </Label>
                  <Label fx:id="addSuccess" layoutX="99.0" layoutY="212.0" text="ADD SUCCESSFUL" textFill="#2bee34" visible="false" />
                  <Label fx:id="addFail" layoutX="81.0" layoutY="212.0" text="ALBUM EXISTS. TRY AGAIN" textFill="#d01313" visible="false" />
                  <AnchorPane fx:id="createAlbumAnchor" layoutY="7.0" prefHeight="335.0" prefWidth="169.0" visible="false">
                     <children>
                        <Label layoutX="46.0" layoutY="39.0" text="Create Album">
                           <font>
                              <Font size="22.0" />
                           </font>
                        </Label>
                        <Button fx:id="albumCreate" layoutX="46.0" layoutY="229.0" mnemonicParsing="false" onAction="#OKButtonClicked" text="OK">
                           <font>
                              <Font size="15.0" />
                           </font>
                        </Button>
                        <Button fx:id="back" layoutX="121.0" layoutY="229.0" mnemonicParsing="false" onAction="#backButtonClicked" text="Back">
                           <font>
                              <Font size="15.0" />
                           </font>
                        </Button>
                        <TextField fx:id="newAlbumName" layoutX="38.0" layoutY="115.0" promptText="Album name" />
                        <Label fx:id="mustInputText" layoutX="64.0" layoutY="160.0" text="MUST INPUT TEXT" textFill="#cd1515" visible="false" />
                     </children>
                  </AnchorPane>
                  <AnchorPane fx:id="searchAnchor" layoutX="4.0" layoutY="7.0" prefHeight="321.0" prefWidth="212.0">
                     <children>
                        <Label layoutX="74.0" layoutY="35.0" text="Search">
                           <font>
                              <Font size="22.0" />
                           </font>
                        </Label>
                        <Label layoutX="76.0" layoutY="67.0" text="Date Range" />
                        <Label layoutX="91.0" layoutY="123.0" text="to" />
                        <Label layoutX="91.0" layoutY="185.0" text="Tags" />
                        <TextArea fx:id="tags" layoutX="24.0" layoutY="208.0" prefHeight="71.0" prefWidth="166.0" promptText="ex: healthy,happy,nyc" />
                        <Button fx:id="searchOK" layoutX="48.0" layoutY="282.0" mnemonicParsing="false" onAction="#searchOKButtonClicked" text="OK" />
                        <Button fx:id="searchBack" layoutX="118.0" layoutY="282.0" mnemonicParsing="false" onAction="#searchBackButtonClicked" text="Back" />
                        <DatePicker fx:id="highEndDate" layoutX="20.0" layoutY="92.0" promptText="dd/mm/yyyy" />**
                        <DatePicker fx:id="lowEndDate" layoutX="20.0" layoutY="148.0" promptText="dd/mm/yyyy" />
                     </children>
                  </AnchorPane>
               </children>
            </AnchorPane>
            <Button fx:id="createButton" layoutX="21.0" layoutY="348.0" mnemonicParsing="false" onAction="#createButtonClicked" text="Create">
               <font>
                  <Font size="15.0" />
               </font>
            </Button>
            <Button fx:id="searchButton" layoutX="212.0" layoutY="348.0" mnemonicParsing="false" onAction="#searchButtonClicked" text="Search">
               <font>
                  <Font size="15.0" />
               </font>
            </Button>
         </children></AnchorPane>
  </items>
</SplitPane>

代码:

public void searchOKButtonClicked(ActionEvent e){
        boolean searchComplete = false;
        User currentUser = LoginController.currentUser;
        if((lowEndDate.getValue() == null) && (highEndDate.getValue() == null) && ((tags == null) || tags.getText().trim().isEmpty())){
            Alert alert = new Alert(AlertType.ERROR);
            alert.setContentText("Oops! At least one field is required to search.");
            alert.show();
        }

}

这里的问题是:lowEndDate和highEndDate总是为null,不管输入是什么。

共有1个答案

景星华
2023-03-14

Sara,我已经用这个简单的项目测试了您的fxml文件

主要

  import javafx.application.Application;
  import javafx.fxml.FXMLLoader;
  import javafx.scene.Parent;
  import javafx.scene.Scene;
  import javafx.stage.Stage;

  public class Main extends Application {
     @Override
     public void start(Stage primaryStage) throws Exception{
         Parent root = FXMLLoader.load(getClass().getResource("sample2.fxml"));
         primaryStage.setTitle("Hello World");
         primaryStage.setScene(new Scene(root));
         primaryStage.show();
     }

     public static void main(String[] args) {
        launch(args);
     }
  }

控制器

   import java.net.URL;
   import java.util.ResourceBundle;

   import javafx.event.ActionEvent;
   import javafx.fxml.FXML;
   import javafx.fxml.Initializable;
   import javafx.scene.control.Alert;
   import javafx.scene.control.Alert.AlertType;
   import javafx.scene.control.DatePicker;

   public class Controller implements Initializable {

       @FXML
       DatePicker lowEndDate;

       public void searchOKButtonClicked(ActionEvent e){

            Alert alert = new Alert(AlertType.ERROR);
            alert.setContentText("Oops! At least one field is required to search. " + " " + lowEndDate.getValue());
            alert.show();
       }

       @Override
       public void initialize(URL arg0, ResourceBundle arg1) {
           // TODO Auto-generated method stub

       }
   }
  <DatePicker fx:id="lowEndDate"  layoutX="20.0" layoutY="92.0"  promptText="dd/mm/yyyy" />
  <DatePicker fx:id="highEndDate" layoutX="20.0" layoutY="148.0" promptText="dd/mm/yyyy" />
 类似资料:
  • 我有两个活动和两个布局。当我在第一个活动中显示列表时,一切都正常,并在单击时给出列表中项目的编号,但当我尝试在第二个活动中重复相同的内容时,它会告诉我RecycleServiceClickListener侦听器为空。 适配器: 第一项活动: 第二项活动: 错误: 我不明白为什么在第一种情况下,它正常处理单击,而在第二种情况下,它说RecyclerViewClickListener为null

  • 当我尝试用相同的设置在代码中创建OracleDataSource时,我可以正确地检索连接。我的出厂配置有什么问题?

  • 问题内容: 我正在使用Servlets&Struts2的混合情况下工作。 我正在调用HTTPServlet,并且正在处理数据。 然后,我需要调用struts API在DB中插入数据。 在那我也使用HTTPSession。 所以我打电话 要获取HttpRequest,然后在该struts动作类中进行会话。 Servlet正在调用Struts Action类。 但 始终返回NULL。 是因为它没有被网

  • 问题内容: 我使用osgi + cdi,并且有以下代码: 而且我有以下tasklist.fxml 但是parent.lookup(“#testComboBox”)返回null。怎么解释呢?我已经多次检查ID的名称。 问题答案: 您可以将所需的逻辑放入控制器类中,而不必使用仅在渲染场景之后才能使用的查找。您可以通过注释将元素从FXML文件注入到控制器类中。 查询通常不可靠,我建议避免使用它们。如果您

  • 问题内容: 这是我的课程正在测试: 现在我要模拟第1和2行,并返回模拟HttpResponse和代码。 我已经尝试过但是失败了: 始终返回null。我希望它返回的模拟对象。我已经阅读了与此错误相关的其他帖子,但不确定该如何处理。有人可以帮忙吗? 问题答案: 代替 你应该使用 您的测试中还存在一些问题:模拟构造函数不正确,并且根本不需要httpResponse。 更新 此代码对我而言正常工作:

  • 问题内容: 我知道这听起来很蠢,但是当我使用 它输出NULL。我在Ubuntu 12.04 64位环境中使用MySQL Workbench,它可以在其他笔记本电脑/操作系统中使用(也使用MySQL Workbench)。 问题答案: 如果您尚未将时区表加载到mysql中,则会发生这种情况。

  • 问题内容: 我正在尝试使用Ajax从服务器获取信息。页面xxx.php是仅写入123的页面。但是,当我想返回该页面的内容时,它返回null。 问题答案: 请注意,ajax是“异步的”。因此,在myFunct()完成执行时,可能尚未收到对服务器调用的响应。您可以将处理来自服务器调用的数据的逻辑放在ajax的“成功”中。

  • 我希望使用方法获得表中所有值的列表。 这是我尝试过的: user.java IUserDAO.java UserRepository.java IntelliJ生成的代码: UserController.java 我得到的输出总是。为什么?