2016-03-11 56 views
0

我需要將Enter鍵快捷鍵偵聽器添加到ComboBox。我只需要關注ComboBox時的快捷方式。我用this答案中描述的方法。Vaadin ComboBox模糊事件在輸入時被觸發按下

combo.addFocusListener(new FocusListener() { 
     @Override 
     public void focus(FocusEvent event) { 
      combo.addShortcutListener(shortcutListener); 
     } 
    }); 
    combo.addBlurListener(new BlurListener() { 
     @Override 
     public void blur(BlurEvent event) { 
      combo.removeShortcutListener(shortcutListener); 
     } 
    }); 

它所做的是在組合框獲得焦點時添加快捷方式偵聽器,並在組合框失去焦點時刪除快捷方式偵聽器。

這適用於TextField s,但不適用於ComboBox。原因是,無論何時按下ComboBox上的輸入,都會調用blur事件,而不是調用快捷方式偵聽器。由於在模糊事件觸發時刪除了快捷方式偵聽器,因此快捷方式偵聽器不會被觸發。

爲什麼按下Enter後組合框會觸發模糊事件?我怎樣才能解決這個問題?

+1

將組合框包裹在面板中,然後爲其分配快捷方式偵聽程序。它應該工作正常。 – Patton

+0

@Patton它的工作。請作爲答覆發佈,我會接受。 –

回答

2

正如上面在註釋中所討論的那樣,將combobox is面板包裝起來並添加快捷方式偵聽器。這應該工作。

爲什麼?默認情況下添加快捷方式偵聽器時,將此快捷方式偵聽器的作用域添加到包含Panel/Window/UI(基本上是單個組件容器)中。

希望這會有所幫助。

相關問題