1

時間追跡用の CellTable ウィジェットを構築しようとしています。最初の列は、次の形式で当月のすべての日を表す必要があります

Fri, 1
Sat, 2
Sun, 3
Mon, 4
Tue, 5
…

月末まで (28 -31 行)。

私のコードは次のようになります。

Column<Rec,String> dayColumn = new Column<Rec,String>(new TextCell())
{   
    @Override
    public String getValue(Rec rec) 
    {
        dayNr = DateTimeFormat.getFormat( "EE,d" ).format(new Date());
        return dayNr;    
    }
}; 

table.addColumn(dayColumn, "Date");

この列には、すべてのセルで今日の日付のみが表示されます。この列の月のすべての日 (1...28/30/31) をそれぞれ独自のセルに取得するにはどうすればよいですか?

4

5 に答える 5

1

Date 変数で Rec 項目のリストを用意すると理想的です。

日付付きの Rec pojo の宣言

Class Rec{
 Date date;
 //getter and setters.
}

Rec アイテムのリストを作成する

List<Rec> recItems = new ArrayList<Rec>();

Date now = new Date();
int nowMonth = now.getMonth();
int nowYear = now.getYear();
List<Date> listOfDatesInThisMonth = new ArrayList<Date>();
Date beginningOfMonth = new Date(nowYear,nowMonth,1);
Date beginningOfNextMonth = new Date(nowYear,nowMonth+1,1);
Date start = beginningOfMonth;
while(start.before(beginningOfNextMonth)){
 listOfDatesInThisMonth.add(start);
 start = new Date(nowYear,nowMonth,start.getDate()+1);
}
for(Date date:listOfDatesInThisMonth){
 Rec recItem = new Rec();
 recItem.setDate(date);
 recItems.add(recItem );
}

レンダリング

Column<Rec,String> dayColumn = new Column<Rec,String>(new TextCell())
{   
    @Override
    public String getValue(Rec rec) 
    {
        dayNr = DateTimeFormat.getFormat( "EE,d" ).format(rec.getDate());
        return dayNr;    
    }
};
于 2013-03-05T18:14:19.620 に答える
0

java.util.Calendarを使用して、サーバー側で毎月の日付を取得できます。

于 2013-03-04T19:54:16.817 に答える
0

このようなもの ??

private static String getMonthsString() {
StringBuffer buffer = new StringBuffer();
Date date = new Date() ;
 int i = date.getMonth();
   if(i==2)//feb {
    for (int j = 0; j < 28; j++) {
       buffer.append(DateTimeFormat.getFormat( "EE,d" ).format( new Date(new Date().getTime() + ((1000 * 60 * 60 * 24*j)))));   
                }
            return buffer.toString(); 

    }
于 2013-03-04T12:28:00.043 に答える
0

日付のスクロール可能なリストを表示するのは、ひどい使いやすさです。代わりに DatePickerCell を使用することをお勧めします。日付ピッカーを使用しているため、ユーザーは日付をクリックするだけで選択できます。

于 2013-03-05T04:04:14.433 に答える
0

セル テーブルでは、各行が 1 つのレコードです。1 か月は少なくとも 28 日になります。したがって、少なくとも 28 のレコードを作成し、セル テーブルで setList または setData を実行する必要があります。短いコード スニペットを以下に示します。

Date currentDate = new Date();

Map<Integer, String> daysMap = new HashMap<Integer, String>();
daysMap .put(0,"Sunday");
.
.
daysMap .put(6, "Saturday");

Map<Integer, Integer> monthMap = new HashMap<Integer, Integer>();
monthMap.put(0, 31);
.
.
monthMap.put(0, 31);

List<Rec> list = new ArrayList<Rec>();

for(int i=1;i <= monthMap.get(currentDate.getMonth());i++)
{
       list.add(new Rec( daysMap.get(currentDate.getDay())+" , "+ i ));
}


Column<Rec,String> dayColumn = new Column<Rec,String>(new TextCell())
{   
    @Override
    public String getValue(Rec rec) 
    {
        return rec.getDayDateString(); // which returns Friday, 1 etc.   
    }
}; 

table.addColumn(dayColumn, "Date");

ListDataProvider<Rec> listDataProvider = new ListDataProvider<Rec>();

listDataProvider.addDataDisplay(table);
listDataProvider.setList( list );
于 2013-03-04T13:39:21.390 に答える