将 getText() 与 LocalDate Java 结合使用

Using getText() with LocalDate Java

我正在 java 中为待办事项列表制作 GUI,我想在文件中写入待办事项类型对象。待办事项对象具有名称、描述和确定完成此操作的日期。使用 GUI,用户可以添加任意数量的待办事项对象并将它们写入文件。我无法使用 getText() 从 JTextField 获取用户日期并将其解析为 LocalDate 类型对象以便写入文件。

我现在 运行 的代码:

//注册方式

public void RegularObligationRegister(RegularObligations R) throws IOException {
   try {

        objOutObligations.writeObject(R);

        JOptionPane.showMessageDialog(null, "Save Success");

        System.out.println(R);

        objOutObligations.flush();

    } catch (FileNotFoundException ex) {   
        System.out.println("Error with specified file . . .");
        ex.printStackTrace();

    } catch (IOException ex) {
        ex.printStackTrace();
    }
} 

//动作执行方法

@Override
public void actionPerformed(ActionEvent ae) {
.
.
.
if (ae.getSource().equals(REntryObligationSave)) {

RegularObligations R = new RegularObligations(RegularEntry_TextObligationName.getText(), 
RegularEntry_TextObligationDescription.getText(), 
LocalDate.parse(RegularEntry_TextObligationDeadline.getText()));

        try {
            this.RegularObligationRegister(R);
        } catch (IOException ex) {
            Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
        }

        RegularEntry_TextObligationName.setText(null);
        RegularEntry_TextObligationDescription.setText(null);
        RegularEntry_TextObligationDeadline.setText(null);
    }

您需要确保您的文本必须是有效的 LocalDate.parse() 方法才能解析。您需要为 LocalDate 指定文本格式。例如:(dd MMM uuuu)。然后你应该将你的文本和格式化程序作为参数传递给 LocalDate.parse() 方法。下面的示例将帮助您将类似于“2018 年 12 月 31 日”的字符串解析为 LocalDate

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM uuuu");

LocalDate.parse(RegularEntry_TextObligationDeadline.getText(),formatter));

您可以检查 DateTimeFormatter 以将您的日期类型自定义为文本 DateTimeFormatter