【问题标题】:Disable previous and next month buttons on com.google.gwt.user.datepicker.client.DatePicker?禁用 com.google.gwt.user.datepicker.client.DatePicker 上的上个月和下个月按钮?
【发布时间】:2011-04-19 03:29:59
【问题描述】:

我有一个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。

有人知道如何获取这些小部件的引用吗?

【问题讨论】:

    标签: java datepicker gwt2 datebox


    【解决方案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 将禁用其后退/前进按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 2012-11-04
      • 2019-11-12
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多