【问题标题】:JDatePicker date formattingJDatePicker 日期格式
【发布时间】:2015-07-07 18:52:07
【问题描述】:

我的应用程序中的 JDatePicker 工作正常,但希望日期格式为 YYYY_MM_DD
目前日期格式为默认Wed Jul 08 15:17:01 ADT 2015
从这个guide 中有一个类可以按如下方式格式化日期。

package net.codejava.swing;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.swing.JFormattedTextField.AbstractFormatter;

public class DateLabelFormatter extends AbstractFormatter {

    private String datePattern = "yyyy-MM-dd";
    private SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);

    @Override
    public Object stringToValue(String text) throws ParseException {
        return dateFormatter.parseObject(text);
    }

    @Override
    public String valueToString(Object value) throws ParseException {
        if (value != null) {
            Calendar cal = (Calendar) value;
            return dateFormatter.format(cal.getTime());
        }

        return "";
    }

}

所以我将类添加到我的包中,并且 Swing 应用程序具有正确的构造函数

JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, new DateLabelFormatter());

所以每次我打电话给datePicker.getModel().getValue().toString() 时,格式都是原始的。
现在我看到 DateLabelFormatter 调用 valueToString,但该方法在我的应用程序类中似乎不可用。
我需要扩展我的应用程序类吗?
我是否调用了错误的方法来获取信息?
它们都在默认包中[不好?]这会导致问题吗?

【问题讨论】:

  • 你为什么打电话给datePicker.getModel().getValue().toString()?那将调用Date.toString()。提供标签格式化程序的目的是让日期选择器本身在文本框中使用它...这就是 display 值...您在哪里尝试使用该代码,为什么?
  • 方法 stringToValue() 应该返回日历而不是日期,请参阅我的答案@stackoverflow.com/questions/35264674/…

标签: java swing swingx


【解决方案1】:

http://www.codejava.net/java-se/swing/how-to-use-jdatepicker-to-display-calendar-component

这可能是一个可以帮助的资源

我相信您可能需要致电

datePicker.getJFormattedTextField().getText()

【讨论】:

    【解决方案2】:

    你必须打电话

    datePicker.getJFormattedTextField().getText()
    

    从 datePicker 中获取显示的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 2010-11-03
      • 2017-12-17
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多