我想使用带有maskFormatter的jxdatepicker。我试过了
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
JFormattedTextField field=new JFormattedTextField (maskFormatter);
jXDatePicker.setEditor (field);
和
MaskFormatter maskFormatter = new MaskFormatter ("##/##/####");
maskFormatter.install (jXDatePicker.getEditor ());
第一种和第二种解决方案都不起作用
PS:
JFormattedTextField
与MaskFormatter
合作正常
使用简单的jXDatePicker
JFormattedTextField
可以正常使用
答案 0 :(得分:1)
这是一个古老的问题,但似乎仍然很活跃,因此这是我们前一段时间(swingx-all-1.6.5-1.jar
)实现功能的方式:
1)为 MaskFormatter
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)将包装好的Formatter添加到 JFormattedTextField
,并将其设置在 JXDatePicker
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);
包装器类基本上进行格式化,因为尝试在DateFormat
上设置JXDatePicker
会导致各种ParseException
。
答案 1 :(得分:0)
就我个人而言,我不是很熟悉Java,但很快就检查了一些文档。我认为setEditor
不是要走的路。 maskFormatter.install
你似乎正朝着正确的方向前进。这样的事情可能会帮助你:
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