뭔가 빠졌을 수도 있지만 GWT의 DatePicker (버전 2.0.3 사용)는 한 달 전후로 스크롤 할 수있는 가능성을 제공하지 않습니다. 내가 놓친 게 있니? 외부 lib (code.google.com/p/gwt-datepicker/)를 사용할 수는 있지만, 제 3 자 lib를 가져 오는 것을 피하고 싶습니다. 제공된 DatePicker에서이 작업을 수행 할 수 있어야합니다. GWT에서.GWT DatePicker, 연도 별 스크롤
6
A
답변
8
MonthSelector 구현을 사용하는 DatePicker 하위 클래스를 만들어야합니다.
이 매우 주제에 GWT 구글 그룹에 대한 최근의 스레드 예제 코드와 함께있다 :
Getting the default DateBox() picker to advance year at a time
2
난 당신이 다음과 같은 것을 할 생각합니다.
여기 GWT DatePicker를 수정하여 월 및 연도 선택기를 추가했습니다. I 2100 개까지 달력 범위를 지정, 당신은 당신은 항상 자신의 일부 기능을 추가하는 위젯을 확장 할 수 있습니다 그것은
import com.google.gwt.user.datepicker.client.CalendarModel;
import com.google.gwt.user.datepicker.client.DatePicker;
import com.google.gwt.user.datepicker.client.DefaultCalendarView;
public class DatePickerWithYearSelectorNew extends DatePicker {
public DatePickerWithYearSelectorNew() {
super(new MonthAndYearSelectorWithYear(), new DefaultCalendarView(),
new CalendarModel());
MonthAndYearSelectorWithYear monthSelector = (MonthAndYearSelectorWithYear)
this.getMonthSelector();
monthSelector.setPicker(this);
monthSelector.setModel(this.getModel());
}
public void refreshComponents() {
super.refreshAll();
}
}
import java.util.Date;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
import com.google.gwt.user.datepicker.client.CalendarModel;
import com.google.gwt.user.datepicker.client.MonthSelector;
public class MonthAndYearSelectorWithYear extends MonthSelector {
private static String BASE_NAME = "datePicker";
private PushButton backwards;
private PushButton forwards;
private PushButton backwardsYear;
private PushButton forwardsYear;
private Grid grid;
private int previousYearColumn = 0;
private int previousMonthColumn = 1;
private int nextMonthColumn = 4;
private int nextYearColumn = 5;
private CalendarModel model;
private DatePickerWithYearSelectorNew picker;
private ListBox monthListBox;
private ListBox yearListBox;
public MonthAndYearSelectorWithYear() {
yearListBox = new ListBox();
for (int i = 1900; i < 2100; i++) {
yearListBox.addItem(i + "");
}
String[] items = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec" };
monthListBox = new ListBox();
for (int i = 0; i < items.length; i++) {
monthListBox.addItem(items[i]);
}
}
public void setModel(CalendarModel model) {
this.model = model;
}
public void setPicker(DatePickerWithYearSelectorNew picker) {
this.picker = picker;
}
@Override
protected void refresh() {
int monthIndex = getModel().getCurrentMonth().getMonth();
monthListBox.setItemSelected(monthIndex, true);
int yearIndex = getModel().getCurrentMonth().getYear();
// System.out.println(yearIndex);
yearListBox.setItemSelected(yearIndex, true);
}
@Override
protected void setup() {
// Set up backwards.
backwards = new PushButton();
backwards.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
addMonths(-1);
}
});
backwards.getUpFace().setHTML("‹");
backwards.setStyleName(BASE_NAME + "PreviousButton");
forwards = new PushButton();
forwards.getUpFace().setHTML("›");
forwards.setStyleName(BASE_NAME + "NextButton");
forwards.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (model.getCurrentMonth().getYear() < 199) {
addMonths(+1);
}
else if(model.getCurrentMonth().getMonth()<11
&&model.getCurrentMonth().getYear()==199)
{
addMonths(+1);
}
}
});
// Set up backwards year
backwardsYear = new PushButton();
backwardsYear.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
addMonths(-12);
picker.refreshComponents();
}
});
backwardsYear.getUpFace().setHTML("«");
backwardsYear.setStyleName(BASE_NAME + "PreviousButton");
forwardsYear = new PushButton();
forwardsYear.getUpFace().setHTML("»");
forwardsYear.setStyleName(BASE_NAME + "NextButton");
forwardsYear.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (model.getCurrentMonth().getYear() < 199) {
addMonths(+12);
picker.refreshComponents();
}
}
});
yearListBox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
// int yearIndex = yearListBox.getSelectedIndex();
//
setYear(Integer.parseInt(yearListBox.getValue(yearIndex)));
setYear(yearListBox.getSelectedIndex());
}
});
monthListBox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
int monthIndex = monthListBox.getSelectedIndex();
setMonth(monthIndex);
}
});
// Set up grid.
grid = new Grid(1, 6);
grid.setWidget(0, previousYearColumn, backwardsYear);
grid.setWidget(0, previousMonthColumn, backwards);
grid.setWidget(0, 2, monthListBox);
grid.setWidget(0, 3, yearListBox);
grid.setWidget(0, nextMonthColumn, forwards);
grid.setWidget(0, nextYearColumn, forwardsYear);
CellFormatter formatter = grid.getCellFormatter();
formatter.setWidth(0, previousYearColumn, "1");
formatter.setWidth(0, previousMonthColumn, "1");
formatter.setWidth(0, nextMonthColumn, "1");
formatter.setWidth(0, nextYearColumn, "1");
grid.setStyleName(BASE_NAME + "MonthSelector");
initWidget(grid);
}
public void addMonths(int numMonths) {
model.shiftCurrentMonth(numMonths);
picker.refreshComponents();
}
@SuppressWarnings("deprecation")
public void setMonth(int month) {
Date tempMonth = new Date();
tempMonth.setMonth(month);
model.setCurrentMonth(tempMonth);
picker.refreshComponents();
}
@SuppressWarnings("deprecation")
public void setYear(int year) {
// to set year
model.getCurrentMonth().setYear(year);
picker.refreshComponents();
}
}
관련 문제
- 1. jQuery UI - Datepicker - 숨기기 연도
- 2. MySQL/PHP로 연도 별 합계
- 3. 기본 jQuery를 사용하여 분기 별 연도 분할
- 4. GWT "뷰포트"모바일 화면 스크롤
- 5. Jquery Datepicker
- 6. Mysql 데이터 월 및 연도
- 7. GWT 2.1 셀 위젯 - 연속 스크롤
- 8. Google App Engine에서의 상황 별 GWT 가제트 및 RPC 서블릿
- 9. JQuery Datpicker 스택 월 및 연도
- 10. 세 테이블의 연도 합집합에 의한 필터 채우기
- 11. SQL에서 구문 분석 연도
- 12. 이전 연도 데이터 고정
- 13. 레일에서 날짜를 변경하는 연도
- 14. MySQL. 연도 선택 범위
- 15. extjs의 연도 달력
- 16. MySQL 연도 유형
- 17. mysql - 연도 범위별 그룹
- 18. 연도 기반 기본 키?
- 19. 부스트 ptime에서 연도 받기
- 20. TextView에 현재 연도 삽입하기
- 21. 캘린더의 최소 연도 설정
- 22. 날짜 선택을위한 jQuery UI datepicker 구성 (날짜 표시기에 연도 표시 안 함)
- 23. GWT-Ext DatePicker.setDisabledDatesRE
- 24. JQuery UI Datapicker : 다음/이전 연도 버튼 추가 방법
- 25. jQuery UI Datepicker 일 수 차이
- 26. jquery datepicker
- 27. Jquery datePicker
- 28. beforeShowDay Datepicker
- 29. DatePicker 형식
- 30. datepicker 문제
에서 몇 가지 작은 변화를 만들어 당신의 소원에 따라 수정할 수 있습니다. 좋은 기능 요청 일 수 있습니다. :) – markovuksanovic
나는 그것을 피하기를 바랬습니다. 흠 ... – stuff22