2012-05-04 36 views
1

嗨有日期爲字符串格式。GWT中的datePicker

datevalue = [Tue Mar 06 06:00:00 CET 2012]。

在我的代碼中我有textBox其中設置了值。 當我點擊textbox我看到一個datepicker

我想要做的是,在一個datepickerdate應該高亮無論值在textbox

而且當我點擊datePicker文本的值應該是在爲 [星期二3月6 06:00:00 CET 2012]一個相同的格式

我的代碼是。

private TextBox getTimeLable(String datevalue) { 
     // TODO Auto-generated method stub 
     System.out.println("date" + datevalue); 
     final TextBox timebx =new TextBox(); 
     timebx.setReadOnly(true); 
     timebx.setText(datevalue); 
     final PopupPanel popupPanel=new PopupPanel(true); 
     DatePicker datePicker=new DatePicker(); 
     datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() { 

      public void onValueChange(ValueChangeEvent<Date> event) { 
       // TODO Auto-generated method stub 

       Date date=event.getValue(); 
       timebx.setText(DateTimeFormat.getFormat("yyyy-MM-dd").format(date)); 
       popupPanel.hide(); 
      } 
     }); 
     popupPanel.setWidget(datePicker); 
     timebx.addClickHandler(new ClickHandler() { 

      public void onClick(ClickEvent event) { 
       // TODO Auto-generated method stub 
       int x=timebx.getAbsoluteLeft(); 
       int y=timebx.getAbsoluteTop(); 
       popupPanel.setPopupPosition(x, y+20); 
       popupPanel.show(); 
      } 
     }); 

     return timebx; 
    } 

編輯的錯誤

errorjava.lang.IllegalArgumentException: [Tue Mar 06 05:00:00 UTC 2012] 

errorjava.lang.IllegalArgumentException: [Wed May 09 12:00:00 UTC+2 2012] 

最初文本框是與此值[星期二3月6日5時○○分00秒UTC 2012]。 但是當我點擊文本框n選擇日期。日期選擇器在文本框中給出第二個日期Wed May 09 12:00:00 UTC + 2 2012.第一個可能是非法的,因爲它是由我設置的。但第二個是由日期選擇器設置的。

回答

1

這應該工作

import com.google.gwt.i18n.client.DateTimeFormat; 

DatePicker datePicker=new DatePicker(); // Have to make final to use in inner method 


timebx.addClickHandler(new ClickHandler() { 

     public void onClick(ClickEvent event) { 
      // TODO Auto-generated method stub 
      String strDate = timebx.getText(); 
      DateTimeFormat format = DateTimeFormat.getFormat("yyyy-MM-dd"); 
      try { 
       Date selDate = (Date)format.parse(strDate); 
       datePicker.setValue(selDate, true); 
      } catch(Exception pe){ 
      // setting current date 
      datePicker.setValue(new Date(), true); 
      } 

      int x=timebx.getAbsoluteLeft(); 
      int y=timebx.getAbsoluteTop(); 
      popupPanel.setPopupPosition(x, y+20); 
      popupPanel.show(); 
     } 
    }); 
+0

現在用我的正確進口'進口java.text.DateFormat中; import java.text.ParseException; import java.text.SimpleDateFormat;'cuse我必須繼承這個'\t [錯誤] [myProject] - 行652:沒有源代碼可用於java.text.SimpleDateFormat類型;你忘了繼承一個必需的模塊嗎?' – GameBuilder

+0

檢查編輯的例子。 –

+0

'DateTimeFormat format = new DateTimeFormat(「yyyy-MM-dd」);'構造函數DateTimeFormat(String)不可見 – GameBuilder