[英]How to handle the finishing of changing the value in the grid cell in GXT2
我有一个使用GXT的应用程序。 在此应用程序中,有一个网格,我需要在其中编辑单元格中的值。 我以这种方式创建单元:
column = new ColumnConfig();
fieldEditor = new CellEditor(new TextField<String>());
column.setEditor(fieldEditor);
column.setId("value");
column.setHeader("Value");
column.setWidth(650);
configs.add(column);
如您所见,我使用TextField
作为编辑器。 因此,更改值后,我可以按Enter键或在窗口的任何其他位置单击。 如何处理。 我试图处理ButtonPress
事件和ButtonPress
事件,但这会丢弃异常或不执行任何操作。
UPD:现在,我正在尝试通过以下方式实现此目的:
valueEditor = new TextField<String>();
KeyListener keyListener = new KeyListener(){
@Override
public void componentKeyUp(ComponentEvent event){
if (event.getKeyCode() == KeyCodes.KEY_ENTER){
if (valueEditor.getValue() != null && !("").equals(valueEditor.getValue())){
Window.alert("Enter Button Pressed");
PropertyItem item;
item = new PropertyItem(grid.getStore().getAt(rowNumber).getName(),
grid.getStore().getAt(rowNumber).getType(), valueEditor.getValue(),
grid.getStore().getAt(rowNumber).isAccepted());
store.update(item);
store.commitChanges();
saveProperties(store, customerId, toRemove);
}
}
}
};
valueEditor.addKeyListener(keyListener);
问题是什么:它不能在编辑结束时处理Enter键,而只能在停用编辑后处理它。
如果要处理TextField上的enter事件 ,则可以使用以下代码
TextField<String> field = new TextField<String>();
KeyListener keyListener = new KeyListener(){
@Override
public void componentKeyUp(ComponentEvent event) {
if(event.getKeyCode() == KeyCodes.KEY_ENTER){
//do stuff
}
}
};
field.addKeyListener(keyListener);
column = new ColumnConfig();
fieldEditor = new CellEditor(field);
column.setEditor(fieldEditor);
column.setId("value");
column.setHeader("Value");
column.setWidth(650);
configs.add(column);
如果这对您没有帮助,则可以使用焦点丢失事件。 希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.