gwt在cellTree的单元格中处理事件

gwt在cellTree的单元格中处理事件,gwt,Gwt,我想在cellTree的单元格中处理双击事件,但无法使其正常工作。 有什么想法吗? 谢谢 if(((节点)值).getNodeType().equals(NodeType.Folder)) { ListDataProvider dataProvider=新的ListDataProvider(((节点)值).getChildNode()); Cell Cell=新的抽象单元(“dblclick”) { @凌驾 公共void呈现(上下文上下文、节点值、安全HtmlBuilder sb) { 如果(v

我想在cellTree的单元格中处理双击事件,但无法使其正常工作。 有什么想法吗? 谢谢

if(((节点)值).getNodeType().equals(NodeType.Folder))
{
ListDataProvider dataProvider=新的ListDataProvider(((节点)值).getChildNode());
Cell Cell=新的抽象单元(“dblclick”)
{
@凌驾
公共void呈现(上下文上下文、节点值、安全HtmlBuilder sb)
{
如果(value!=null){sb.appendEscaped(value.getNodeName());}
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、节点值、,
NativeEvent事件,ValueUpdater(ValueUpdater)
{
如果(value==null){return;}
onBrowserEvent(上下文、父级、值、事件、值更新程序);
if(“dblclick”.equals(事件))
{
ControllerPqm.getInstance().advice(ControllerPqm.advice_错误,“Chick”);
}
}
};
返回新的DefaultNodeInfo(数据提供者,单元格);
}

必须比较事件的类型属性:

"dblclick".equals(event.getType())

必须比较事件的类型属性:

"dblclick".equals(event.getType())

您必须扩展一些其他小部件并在构造函数中接收双击事件:

然后继续编写代码来处理下沉事件。请注意,双击在某些浏览器的Linux版本中存在问题—在Linux版本和一些旧的mac/win版本中,它往往会多次触发单击事件

public void onBrowserEvent(Event event) 
{ 
    switch (DOM.eventGetType(event)) 
    { 
    case Event.ONCLICK: 
        // your handler code here
      break; 

    case Event.ONDBLCLICK:   
        // your handler code here     
      break;
    }
} 

理想情况下,此代码应该放在顶级NodeTree类本身(或扩展小部件的某个类)中,双击它将找到被双击的节点,并在此基础上执行操作。

您必须扩展其他小部件并在构造函数中接收双击事件:

然后继续编写代码来处理下沉事件。请注意,双击在某些浏览器的Linux版本中存在问题—在Linux版本和一些旧的mac/win版本中,它往往会多次触发单击事件

public void onBrowserEvent(Event event) 
{ 
    switch (DOM.eventGetType(event)) 
    { 
    case Event.ONCLICK: 
        // your handler code here
      break; 

    case Event.ONDBLCLICK:   
        // your handler code here     
      break;
    }
} 
理想情况下,此代码应该放在顶级NodeTree类本身(或扩展小部件的某个类)中,双击它将找到双击的节点,并根据该节点执行操作。

尝试以下操作:

public class MyMenuItem {
  private String name;
  public MyMenuItem(String name) {
    super();
    this.name = name;
    list = new ArrayList<MyMenuItem>();
  }
  //...
  public boolean hasChildrens() {
    return list.size()>0;
  }
}

public class MyTreeModel implements TreeViewModel {
  ArrayList<MyMenuItem> all;
  public MyTreeModel() {
    all = new ArrayList<MyMenuItem>();
    //Default items
    all.add(... //fill

  }
  @Override
  public <T> NodeInfo<?> getNodeInfo(T value) {
    ListDataProvider<MyMenuItem> dataProvider;
    if (value == null) { // root 
        dataProvider = new ListDataProvider<MyMenuItem>(all);
    } else {
        dataProvider = new ListDataProvider<MyMenuItem>(((MyMenuItem) value).getList());
    }
    Cell<MyMenuItem> cell = new MyCell(); //my Cell with dblclick event
    return new DefaultNodeInfo<MyMenuItem>(dataProvider, cell);
  }
  @Override
  public boolean isLeaf(Object value) {
    if (value instanceof MyMenuItem) {
        MyMenuItem t = (MyMenuItem) value;
        if (!t.hasChildrens())
            return true;
        return false;
    }
    return false; 
  }
}
试试这个:

public class MyMenuItem {
  private String name;
  public MyMenuItem(String name) {
    super();
    this.name = name;
    list = new ArrayList<MyMenuItem>();
  }
  //...
  public boolean hasChildrens() {
    return list.size()>0;
  }
}

public class MyTreeModel implements TreeViewModel {
  ArrayList<MyMenuItem> all;
  public MyTreeModel() {
    all = new ArrayList<MyMenuItem>();
    //Default items
    all.add(... //fill

  }
  @Override
  public <T> NodeInfo<?> getNodeInfo(T value) {
    ListDataProvider<MyMenuItem> dataProvider;
    if (value == null) { // root 
        dataProvider = new ListDataProvider<MyMenuItem>(all);
    } else {
        dataProvider = new ListDataProvider<MyMenuItem>(((MyMenuItem) value).getList());
    }
    Cell<MyMenuItem> cell = new MyCell(); //my Cell with dblclick event
    return new DefaultNodeInfo<MyMenuItem>(dataProvider, cell);
  }
  @Override
  public boolean isLeaf(Object value) {
    if (value instanceof MyMenuItem) {
        MyMenuItem t = (MyMenuItem) value;
        if (!t.hasChildrens())
            return true;
        return false;
    }
    return false; 
  }
}

如果你想在你的手机中使用browserevent,你需要知道要使用的事件是什么。 举例说明

public class OrderCell extends AbstractCell<Order>  {

    public  OrderCell() {
        super("mousedown","mouseover","mouseup","mousemove");
    }

    @Override
            public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context,
                    Element parent, Order value, NativeEvent event,
                    ValueUpdater<Order> valueUpdater) {
                System.out.print("event fired");

            }
公共类OrderCell扩展了AbstractCell{ 公共OrderCell(){ 超级(“mousedown”、“mouseover”、“mouseup”、“mousemove”); } @凌驾 public void onBrowserEvent(com.google.gwt.cell.client.cell.Context, 元素父级、订单值、NativeEvent事件、, ValueUpdater(ValueUpdater){ 系统输出打印(“事件触发”); }
如果您想使用手机中的browserevent,您需要告诉要使用的事件是什么。 举例说明

public class OrderCell extends AbstractCell<Order>  {

    public  OrderCell() {
        super("mousedown","mouseover","mouseup","mousemove");
    }

    @Override
            public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context,
                    Element parent, Order value, NativeEvent event,
                    ValueUpdater<Order> valueUpdater) {
                System.out.print("event fired");

            }
公共类OrderCell扩展了AbstractCell{ 公共OrderCell(){ 超级(“mousedown”、“mouseover”、“mouseup”、“mousemove”); } @凌驾 public void onBrowserEvent(com.google.gwt.cell.client.cell.Context, 元素父级、订单值、NativeEvent事件、, ValueUpdater(ValueUpdater){ 系统输出打印(“事件触发”); }
这不是“为我编写代码”网站!这不是“为我编写代码”网站!