我有一个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
事件和MouseClick事件,但这会导致异常或不执行任何操作。
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按钮,只是在编辑停用后才处理它。
答案 0 :(得分:0)
如果你想在TextField上处理输入事件,你可以使用以下代码
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);
如果对你没有帮助,你可以使用焦点丢失事件。 希望它会对你有所帮助。