2010-12-28 8 views
1

抽象的なテーブルモデルを定義しましたが、列の1つにdd/mm/yyyy形式の日付値 を格納する必要があります。抽象的なテーブルモデル内で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)}, 
     }; 



} 
+2

私はあなたの問題が何であるか分かりませんが、「mm」は数ヶ月ではなく、数ヶ月を表しています。あなたは何ヶ月も 'MM'を使いたいと思っています。 ['SimpleDataFormat' javadoc](http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html)も参照してください。 – BalusC

答えて

1

あなただけのためにあなたが日付を格納形式のユーザーを制限するべきではありません。Dateオブジェクトにあなたのテーブルモデル解析、ユーザの入力を持っており、ちょうどあなたのファイルストレージと一致するように日付をフォーマットするためのSimpleDateFormatを使用しています。

いくつかの検証が必要な場合は、セルエディタを参照するか、不正なデータを入力した場合に次の手順に移動することを許可しないでください。

+0

どうすればいいかわからないので、これを行う方法を教えてもらえますか?サイモンについて –

+0

どちらの部分?あなたは、あなたが何を試しているのか、何が問題になっているのか、はるかに具体的になりますか? – jzd

0

誰かがテーブルに行を追加したり、行を変更したときに、任意のStringだけでなく、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の代わりにAを使用することを検討してくださいシンプルな配列。これにより、アイテムの追加や削除が容易になります。

+0

大丈夫、この多くのお礼をお試しください –

1

オラクルのチュートリアルをご覧ください。 http://download.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html かなり明確にすべきです。

情報クラスの日付を使用すると、ソートし、他のことができますように、実際の日付を保存
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; 
    } 
} 

:あなたのように線に沿って、あなたのクラスを記述する必要があり、ほとんどの柔軟性を与えるために、オレグが書いたもの拡張するために

1

必要に応じて操作の種類を選択します。日付を文字列として格納することは決して良い考えではありません。

+0

多くのおかげで私はこれを試してみます。 –

+0

セリアス - 良い仕事。 SimpleDateFormatは実際にはスレッドセーフではありません(javadocを参照)。そのため、解析するたびに新しいものを同期するか作成する必要があります。 –

+0

オレグ、あなたは正しいです。 SimpleDateFormatの作成のための静的は存在してはいけません。私の指はちょうど上記の行をコピーします。良いキャッチ。 – celias

0

モデルにDateオブジェクトを格納します。その後、Table Format Renderersを使用すると、希望の形式で日付を簡単に表示できます。

関連する問題