我已经定义了一个抽象表模型,但其中一列应该包含日期值 作为dd / mm / yyyy格式不确定如何做到这一点。
我有一个外部全局文件,并将日期硬编码为dd / mm / yyyy。
如何在抽象表模型中定义此列,以便仅允许 只有dd / mm / yyyy格式的日期。
public class OptraderGlobalParameters
{
public static boolean DEBUG = true; //Set DEBUG = true for Debugging
/*=========================*/
/*Table Array For Dividends*/
/*=========================*/
public static String[] columnNames
= {"Date",
"Dividend",
"Actual",
"Yield (%)"
};
public static Object[][] data
= { {"dd/mm/yyyy", new Double(5), new Boolean(false), new Boolean(false)},
{"dd/mm/yyyy", new Double(5), new Boolean(false), new Boolean(false)},
{"dd/mm/yyyy", new Double(5), new Boolean(false), new Boolean(false)},
{"dd/mm/yyyy", new Double(5), new Boolean(false), new Boolean(false)},
{"dd/mm/yyyy", new Double(5), new Boolean(false), new Boolean(false)},
};
}
答案 0 :(得分:1)
您不应仅仅因为存储日期的格式而限制用户。让您的表模型将用户输入解析为Date对象,并使用SimpleDateFormat格式化Date以匹配您的文件存储。
如果您需要进行某些验证,请查看单元格编辑器,或者如果用户输入错误数据,则不允许用户转到下一步。
答案 1 :(得分:1)
查看Oracle教程。 http://download.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html 应该很清楚。
答案 2 :(得分:1)
要扩展Oleg所写的内容,为了给你最大的灵活性,你应该按照以下方式编写课程:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class OptraderInfo {
private Date date;
private Double dividend;
public static final String DEFAULT_DATE_FORMAT = "dd/MM/yyyy";
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
public String getDateFormatted() {
return DATE_FORMAT.format(date);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public void setDate(String date) throws ParseException {
this.date = DATE_FORMAT.parse(date);
}
public void setDate(String date, String format) throws ParseException {
this.date = new SimpleDateFormat(format).parse(date);
}
public Double getDividend() {
return dividend;
}
public void setDividend(Double dividend) {
this.dividend = dividend;
}
}
将实际日期存储为info类中的日期允许您根据需要进行排序和其他类型的操作。将日期存储为字符串永远不是一个好主意。
答案 3 :(得分:0)
听起来你想确保每当有人在你的表中添加一行或修改一行时,他们只能使用dd / mm / yyyy格式,而不仅仅是一些任意的字符串。
如果是这种情况,我建议创建一个新类
public class OptraderInfo{
private String date;
private Double dividend;
// etc
private void setDate(String newDate){
// Insert logic checking the newDate format here
date = newDate;
}
}
然后更改数据表以包含OptraderInfo
public static OptraderInfo[] data = new OptraderInfo[5];
另外,请考虑使用ArrayList而不是简单数组。这样可以更轻松地添加和删除项目。
public static ArrayList<OptraderInfo> data = new ArrayList<OptraderInfo>(5);
答案 4 :(得分:0)
在模型中存储Date对象。然后Table Format Renderers可以轻松地以您希望的格式显示日期。