GWT中的事件处理
我想这样做: 我想要一个单元格表,其中每个单元格都是我编写的类。我需要为单元格表添加一个单击事件。那么,我如何才能知道单击了哪个单元格。由于Cell是我定义的一个类,因此基于单击的Cell,我需要执行一些操作。我是否可以以某种方式获取单击的单元格的对象详细信息。例如 我需要一个类似于单元格表的excel表,excel表中的每个单元格都是我定义的类,比如该类包含如下值:GWT中的事件处理,gwt,uibinder,Gwt,Uibinder,我想这样做: 我想要一个单元格表,其中每个单元格都是我编写的类。我需要为单元格表添加一个单击事件。那么,我如何才能知道单击了哪个单元格。由于Cell是我定义的一个类,因此基于单击的Cell,我需要执行一些操作。我是否可以以某种方式获取单击的单元格的对象详细信息。例如 我需要一个类似于单元格表的excel表,excel表中的每个单元格都是我定义的类,比如该类包含如下值: CellClass{ boolean isempty; string name; int id; } 现在,如果我在ex
CellClass{
boolean isempty;
string name;
int id;
}
现在,如果我在excel工作表中单击,如何获取单击的单元格,以便告诉用户单元格的名称以及它是否为空。使用ClickableTextCell创建可单击单元格。请参阅以下代码详细信息:
nameCell = new ClickableTextCell() {
@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
String data, SafeHtmlBuilder sb) {
super.render(context, "", sb);
sb.appendHtmlConstant("<input type=text value='"+data+"' />);
};
nameColumn = new Column<Document, String>(nameCell) {
@Override
public String getValue(Document object) {
//code
}
};
nameCell=新建ClickableTextCell(){
@凌驾
public void render(com.google.gwt.cell.client.cell.Context),
字符串数据,安全HTMLBuilder sb){
超级渲染(上下文“,”sb);
某人附加物(“);
};
nameColumn=新列(nameCell){
@凌驾
公共字符串getValue(文档对象){
//代码
}
};
请注意,每列只有一个单元格实例,并非每个值都由一个单元格实例表示。上面描述的结构将是您在CellTable.setRowData中设置的数据结构
单元格必须通过中的超级构造函数或中定义的getConsumedEvents
方法声明它感兴趣的事件。在本例中,是“单击”事件
然后,您可以在自定义单元格中实现onBrowserEvent
方法,并对单击作出反应。将向此方法传递一个上下文,指示事件引用的行和列(请参阅)以及与单击关联的键和值
在您的情况下,自定义单元格将如下所示:
public class MyCell extends AbstractCell<String> {
public MyCell() {
super("click");
}
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
// Handle the click event.
if ("click".equals(event.getType())) {
// Ignore clicks that occur outside of the outermost element.
EventTarget eventTarget = event.getEventTarget();
if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) {
doAction(value, valueUpdater);
}
}
}
}
公共类MyCell扩展了AbstractCell{
公共迈塞尔(){
超级(“点击”);
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、字符串值、NativeEvent事件、ValueUpdater ValueUpdater){
//处理单击事件。
如果(“单击“.equals(event.getType())){
//忽略在最外层元素之外发生的单击。
EventTarget EventTarget=event.getEventTarget();
if(parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))){
doAction(值、值更新程序);
}
}
}
}
您还可以在级别上拦截事件
您可以在中找到更多信息