[英]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.