KeyPress处理程序不适用于第一个字母

时间:2017-05-18 09:45:30

标签: java gwt gxt

我需要在每个按键事件中打印方法中的内容。我已经尝试了下面的代码,问题是,第一次按键始终返回null。然而,在键入第二个字母后,它会打印第一个键事件。按键事件未捕获第一个事件的信件。你能帮忙解决这个问题吗?

final StringComboBox searchGridTextBox = new StringComboBox();

searchGridTextBox.setEmptyText("Search Grid");
searchGridTextBox.addFocusHandler(new FocusHandler(){
    @Override
    public void onFocus(FocusEvent event){
        if(searchGridTextBox.getStore().size() > 0)
            searchGridTextBox.expand();

    }
}); 
searchGridTextBox.addKeyPressHandler(new KeyPressHandler() {
    @Override
    public void onKeyPress(KeyPressEvent event) {
        System.out.println("On key press event ")   ;           
    }
});

2 个答案:

答案 0 :(得分:1)

对于此方案,您需要使用KeyUpEvent。请在下面找到更新的代码。

final StringComboBox searchGridTextBox = new StringComboBox();

searchGridTextBox.setEmptyText("Search Grid");
searchGridTextBox.addFocusHandler(new FocusHandler(){
@Override
public void onFocus(FocusEvent event){
    if(searchGridTextBox.getStore().size() > 0)
        searchGridTextBox.expand();

}
}); 
searchGridTextBox.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
    System.out.println("On key up event ")   ;           
}
});

答案 1 :(得分:0)

还有2个处理程序可用keyUp和keyDown处理程序。尝试使用keyUp / keyDown处理程序,看看它是否符合您的要求。

keyPress在空组合框的情况下的行为有所不同,本文将对此进行解释:

https://stackoverflow.com/a/42036960/3612019