首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在maskFormatter中使用jXDatePicker?

如何在maskFormatter中使用jXDatePicker?
EN

Stack Overflow用户
提问于 2016-04-26 16:47:29
回答 2查看 476关注 0票数 17

我想在maskFormatter中使用jxdatepicker。我试过了

代码语言:javascript
复制
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
JFormattedTextField field=new JFormattedTextField (maskFormatter);
jXDatePicker.setEditor (field);

代码语言:javascript
复制
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
maskFormatter.install (jXDatePicker.getEditor ());

第一种或第二种解决方案都不起作用。

PS:JFormattedTextFieldMaskFormatter配合良好,jXDatePicker与简单的JFormattedTextField配合使用

EN

回答 2

Stack Overflow用户

发布于 2018-11-22 01:25:13

这是一个老问题,但似乎仍然有效,所以下面是我们不久前是如何实现该功能的(swingx-all-1.6.5-1.jar):

1)为 MaskFormatter创建包装类

代码语言:javascript
复制
public class Wrapper extends MaskFormatter {

private final static String DD_MM_YYY = "dd/MM/yyyy";

public Wrapper(String string) throws ParseException {
    super(string);

}

@Override
public Object stringToValue(String value) throws ParseException {

    SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYY);
    Date parsed = format.parse(value);
    return parsed;

}

public String valueToString(Object value) throws ParseException {
    if (value != null) {
        SimpleDateFormat format = new SimpleDateFormat(DD_MM_YYY);
        String formated = format.format((Date) value);
        return super.valueToString(formated);
    } else {
        return super.valueToString(value);
    }

  }

}

2)将包装的格式化程序添加到 JFormattedTextField ,并在 JXDatePicker上进行设置

代码语言:javascript
复制
MaskFormatter maskFormatter;
JXDatePicker datePicker = new JXDatePicker();
try {
        maskFormatter = new Wrapper("##/##/####");
        JFormattedTextField field = new JFormattedTextField(maskFormatter);
        datePicker.setEditor(field);
} catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
}
somePanel.add(datePicker);

包装器类基本上执行格式化,因为尝试在JXDatePicker上设置DateFormat会导致各种ParseException

票数 1
EN

Stack Overflow用户

发布于 2016-05-10 17:44:13

就我个人而言,我对Java不是很熟练,但在快速检查了一些文档后。我认为setEditor不是最好的选择。使用maskFormatter.install,您似乎走对了方向。像这样的东西可能会对你有所帮助:

代码语言:javascript
复制
JXDatePicker picker = new JXDatePicker();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
picker.setFormats(format);

选择来源:JXDatePicker using SimpleDateFormat to format dd.MM.yy to dd.MM.yyyy with current century

或者看看这个:https://stackoverflow.com/a/9036979/4820655

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36859797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档