我有com.google.gwt.user.datepicker.client.DatePicker
,我不希望用户在某些情况下能够选择上个月或下个月。
例如,我不希望用户能够在今天前一天选择。
I figured out how to disable the actual days in the calendar,但用户仍然可以点击<<
并返回一个月,这一天都被禁用。
我找不到任何方法来获取对<<
和>>
按钮/链接的引用,最好隐藏它们或者禁用它们。
我正在使用GWT 2.1.1并且如果重要的话可以转到GWT 2.2.0。
有谁知道如何获取对这些小部件的引用?
答案 0 :(得分:1)
DatePicker使用的DefaultDateMonthSelector(com.google.gwt.user.datepicker.client)不会公开这些小部件,因此无法直接禁用这些按钮。
要实现此功能,请编写一个新的DateMonthSelector(您可以从DefaultMonthSelector http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/datepicker/client/DefaultMonthSelector.java的源开始)。例如,
public final class LimitedMonthSelector extends MonthSelector {
// Keep the PushButtons disabled
// Modified from the original DefaultMonthSelector
@Override
protected void setup() {
// Set up backwards.
backwards = new PushButton();
backwards.getUpFace().setHTML("«");
backwards.setStyleName(css().previousButton());
backwards.setEnabled(false); // Disable the back button
forwards = new PushButton();
forwards.getUpFace().setHTML("»");
forwards.setStyleName(css().nextButton());
forwards.setEnabled(false); // Disable the forward button
// Set up grid.
grid = new Grid(1, 3);
grid.setWidget(0, 0, backwards);
grid.setWidget(0, 2, forwards);
CellFormatter formatter = grid.getCellFormatter();
formatter.setStyleName(0, 1, css().month());
formatter.setWidth(0, 0, "1");
formatter.setWidth(0, 1, "100%");
formatter.setWidth(0, 2, "1");
grid.setStyleName(css().monthSelector());
initWidget(grid);
}
}
然后在DatePicker实现中使用此MonthSelector实现。像,
public class LimitedDatePicker extends DatePicker {
public MonthYearDatePicker() {
super(new LimitedMonthSelector(), new DefaultCalendarView(), new CalendarModel());
}
}
这个新的LimitedDatePicker将禁用其后退/前进按钮。