2017-02-17 214 views
2

我想改變焦點,如果用戶按下組合框中的ENTER鍵。首先,我使用了一個動作偵聽器,但當用戶通過向上或向下箭頭鍵或在下拉列表中選擇值來更改其值時,也會觸發此動作。JavaFX Combobox:處理按鍵輸入

因此,我認爲我可以通過註冊一個密鑰處理程序來解決這個問題。但它不適用於ENTER鍵。

有沒有辦法解決我的問題?

編輯:

對不起,我認爲我的介紹就夠了。

所以我有一些文本框和一個組合框的形式。爲了提高可用性,用戶只需要按Enter鍵切換到下一個字段。這對於文本框的偉大工程:

textfield.setOnAction(e -> { 
     cmbTax.requestFocus(); 
}); 

但是,如果我註冊一個動作監聽,就不能滿足我的要求,因爲它會當值改變總是被觸發:

cmbTax.setOnAction(e->textfield2.requestFocus()); 

所以我嘗試按鍵偵聽器,但它並沒有在ENTER反應,因爲它是處理內部之前我聽者會被稱爲:

cmbTax.getEditor().setOnKeyPressed(this::handleKeyPressedForComboBox); 

問候

+1

發表[MCVE],顯示你到目前爲止做了什麼和descibe,你有問題。 – MBec

回答

1

這個工作對我來說:

setOnKeyPressed(e -> { 
    if (e.getCode() == KeyCode.ENTER) { 
     System.out.println("TEST"); 
    } 
}); 

你的情況:

cmbTax.setOnKeyPressed(this::handleKeyPressedForComboBox); 
+0

謝謝,這解決了我的問題。但我認爲這是一個非常奇怪的行爲。我在編輯器上註冊了關鍵監聽器,因爲我也想按下箭頭鍵來聽,但這沒有奏效。但不管我在最後註冊兩次。 – marky8264