【问题标题】:GWT UiBinder: Add Mouse Handler to Panel or GridGWT UiBinder:将鼠标处理程序添加到面板或网格
【发布时间】:2010-10-10 21:07:22
【问题描述】:

我找不到将鼠标处理程序添加到 GWT 面板或网格的方法 在使用 UiBinder 时。

我基本上需要一种可以通过网格检测以下内容的方法:

  1. 检测事件发生在哪个单元格中。
  2. 检测鼠标向上事件
  3. 检测鼠标按下事件
  4. 检测鼠标移出事件
  5. 检测鼠标悬停事件

我曾计划尝试使用覆盖的绝对面板来执行此操作 网格的顶部。我可以在 AbsolutePanel 上检测到这些事件, 然后根据事件的位置,确定哪个单元格 如果没有 AbsolutePanel,事件会发生 覆盖在网格之上,然后采取相应的行动。我现在发现 在这些方面对面板施加完全相同的限制 点击处理程序,并且没有很多选项。

我只需要找到一种方法来让上述事件在网格上工作。 你会推荐什么?不使用 UiBinder,我使用的是 DomHandlers, 这似乎在 UiBinder 中被禁用(我错了吗?)。

非常感谢任何帮助。谢谢!

~斯科特

【问题讨论】:

    标签: gwt grid mouseevent uibinder


    【解决方案1】:

    您可以扩展 Grid 并让它实现适当的接口,例如:

    public class ClickableGrid extends Grid implements HasMouseDownHandlers {
         ...
        public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
            return addDomHandler(handler, MouseDownEvent.getType());
        }
    
    }
    

    然后在模板中使用它

    <my:ClickableGrid ui:field="clickableGrid">
    

    并在所属类中添加处理程序

    @UiHandler("clickableGrid")
        void handleClick(MouseDownEvent event) {
    ...
    }
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      ...或者简单地将Grid 放在FocusPanel 中:

      public class MouseGrid extends Composite {
      
          public MouseGrid() {
              Grid grid = new Grid(3, 3);
              for (int row = 0; row < 3; ++row) {
                  for (int col = 0; col < 3; ++col) {
                      grid.setText(row, col, "" + row
                              + ", "
                              + col);
                  }
              }
              FocusPanel panel = new FocusPanel();
              panel.setWidget(grid);
              initWidget(panel);
              panel.addMouseDownHandler(new MouseDownHandler() {
      
                  @Override
                  public void onMouseDown(MouseDownEvent event) {
                      Window.alert("mouse down");
                  }
              });
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        相关资源
        最近更新 更多