【问题标题】:JCalendar value not populating properlyJCalendar 值未正确填充
【发布时间】:2013-01-10 12:00:06
【问题描述】:
String date =rs.getString(10); 
    ((JTextField)fieldClose.getDateEditor().getUiComponent()).setText(date);

以上用于从数据库中提取 DATE 值以将其设置为文本字段。最初插入日期时,它是 com.toedter.calendar.JDateChooser();类型。但是在检索到它之后,我无法在现场正确设置它。我将用下面的图片支持这一点,以便您理解:

它是红色的:

但理想情况下应该被识别并且日期颜色应该是黑色的,如下所示,但这必须手动完成......我该如何解决这个问题,使其自动变为黑色。

【问题讨论】:

    标签: java mysql swing user-interface jcalendar


    【解决方案1】:

    最简单的方法是使用SimpleDateFormat 类:

    String dateString = rs.getString(10); 
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = inputFormat.parse(dateString);
    SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
    ((JTextField)fieldClose.getDateEditor().getUiComponent()).setText(outputFormat.format(date));
    

    只需更改Locale 的值,您就可以更改表示月份的三个字母缩写的语言。
    SimpleDateFormat 方法的参考:

    【讨论】:

    • @linsky 首先显示绿色,而不是以前的红色,现在可以识别格式,这很好。但是,我不确定如何使用 pst.setDate(7, fieldClose.....) 以 yyyy-MM-dd 格式保存日期,而不是 dd-mm-yyyy
    • @ali 如果您无法以该格式存储它,则使用上述过程重新格式化并存储它。虽然首先将其存储为 dd-MMM-yyyy 格式会更简单
    • 不使用 API xxx.setDateFormatString()setLocale in the JCalendar the constuctor 中实现的内置方法
    • @mKorbel 我知道他做了自定义控件,需要重新格式化日期。
    • @ali 如果您正在使用一些库组件,那么请务必使用该组件的方法,如 mKorbel 所述。没有必要重新发明轮子。
    【解决方案2】:

    再次JCalendar - setting date correctly in Java using correct format,请注意我从未在 jar 文件中使用打包的 JCalendar,始终是代码源

    1. 为具体实例设置setDateFormat

      a)cal.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));

      b)cal.setLocale(Locale.FRANCE);//例如

    2. JDBC Statement返回getDate(10)(代替rs.getString(10);),这是JCalendar中方法setDate()的有效java.util.Date实例

    3. Editor派生JSpinner,在那里你可以使用和设置editor.getTextField().setXxx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2017-02-12
      • 1970-01-01
      相关资源
      最近更新 更多