Java GWT CellTable/DataGrid-如何检测列选择?
当一行被选中时,我想知道该行的哪一列被选中 目前,我将覆盖onBrowserEvent2Java GWT CellTable/DataGrid-如何检测列选择?,java,gwt,gwt-celltable,Java,Gwt,Gwt Celltable,当一行被选中时,我想知道该行的哪一列被选中 目前,我将覆盖onBrowserEvent2 protected void onBrowserEvent2(Event event) { // Get the event target. EventTarget eventTarget = event.getEventTarget(); if (!Element.is(eventTarget)){ return; } final Element target = event
protected void onBrowserEvent2(Event event)
{
// Get the event target.
EventTarget eventTarget = event.getEventTarget();
if (!Element.is(eventTarget)){
return;
}
final Element target = event.getEventTarget().cast();
// Find the cell where the event occurred.
TableCellElement tableCell = findNearestParentCell(target);
if (tableCell == null) {
return;
}
int col = tableCell.getCellIndex();
.... blah ... blah ....
}
在哪里,
//exact replica code from {@link AbstractCellTable} private method findNearestParentCell
private TableCellElement findNearestParentCell(Element elem) {
while ((elem != null) && (elem != getElement())) {
// TODO: We need is() implementations in all Element subclasses.
// This would allow us to use TableCellElement.is() -- much cleaner.
String tagName = elem.getTagName();
if ("td".equalsIgnoreCase(tagName) || "th".equalsIgnoreCase(tagName)) {
return elem.cast();
}
elem = elem.getParentElement();
}
return null;
}
这是唯一的办法吗?是否有一个带有更改事件的选择模型,它会告诉我单击了行的哪一列
有没有办法在列或列的单元格上实现单击处理程序?OMG。。。这是一个非常简单的解决方案 为列使用ClickableTextCell的扩展名
public class SelectableTextCell
extends ClickableTextCell
{
@Override
public void onBrowserEvent(
Context context,
Element parent,
String value,
NativeEvent event,
ValueUpdater<String> valueUpdater)
{
GWT.log("event="+event.getType()); //$NON-NLS-1$
doYourThing();
if (IWishToPropagateTheClick)
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}
公共类SelectableTextCell
扩展ClickableTextCell
{
@凌驾
公开无效onBrowserEvent(
语境,
元素父元素,
字符串值,
NativeEvent事件,
ValueUpdater(ValueUpdater)
{
GWT.log(“event=“+event.getType());//$NON-NLS-1$
做你的事;
如果(iWishTopRopagateClick)
onBrowserEvent(上下文、父级、值、事件、值更新程序);
}
}
或者对于更一般的情况,扩展AbstractCell,并在构造函数中指定已使用的事件。也许值得注意的是,在上面的示例中,您可以引用context.getColumn(),它将返回单元格的列索引。