在抽象表模型中定义dd / mm / yyyy字段

时间:2010-12-28 18:10:34

标签: java

我已经定义了一个抽象表模型,但其中一列应该包含日期值 作为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)},
      };



}  

5 个答案:

答案 0 :(得分:1)

您不应仅仅因为存储日期的格式而限制用户。让您的表模型将用户输入解析为Date对象,并使用SimpleDateFormat格式化Date以匹配您的文件存储。

如果您需要进行某些验证,请查看单元格编辑器,或者如果用户输入错误数据,则不允许用户转到下一步。

答案 1 :(得分:1)

答案 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可以轻松地以您希望的格式显示日期。