【问题标题】:Why it shows errors at swing components [closed]为什么它在摆动组件上显示错误[关闭]
【发布时间】:2021-05-01 05:46:56
【问题描述】:

我是JFrame 的新手。我刚开始学习如何创建一个 Java 项目。我创建了一个输入字段作为日期并插入了DateChooseCombo。我有 2 个问题。

  1. 当我运行应用程序时,日历中的日期是不可见的,但它会显示在框中选择的日期。
  2. 当我提交表单时,它给出了一个错误"Cannot format given Object as a Date"

日期代码如下:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String addDate = dateFormat.format(txt_AddDate.getSelectedDate());
ps.setString(3 ,addDate);

使用的日期格式是04/30/2021

谁能帮我解决这两个问题?

【问题讨论】:

  • 如果您发布了minimal reproducible example,我们可以将其复制到我们的 IDE 中并进行测试,那么您更有可能获得帮助。没有看到代码,我们无法判断你做了什么。
  • IDE 与问题无关(除非代码在另一个 IDE 中运行正常)。不要标记它或在标题中提及它。
  • 如果日期格式是 04/30/21,为什么要指定格式 MM/dd/yyyy,即 04/30/2021?
  • 两个建议:(1)不要使用SimpleDateFormatDate。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APILocalDate。存在支持LocalDate Swing的日期选择器。 (2) 不要将选定的日期作为字符串传递给准备好的语句。通过LocalDate。见Insert & fetch …

标签: java swing date simpledateformat jdatechooser


【解决方案1】:

方法getSelectedDate(),在类datechooser.beans.DateChooserCombo中,返回一个java.util.Calendar

方法format,在类java.text.DateFormat(它是java.text.SimpleDateFormat的超类,因此被SimpleDateformat继承)需要java.util.Date类型的参数。 Calendar 不是 Date,这就是您收到错误的原因。 Java 无法将 Calendar 转换为 Date

但是,Calendar 类有方法 getTime,它返回一个 Date
因此,您需要将您在问题中发布的代码的第二行更改为以下内容。

String addDate = dateFormat.format(txt_AddDate.getSelectedDate().getTime());

您也可以参考以下问题(及答案):
Can't get date from DateChooserCombo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 2021-10-16
    • 2022-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多