2017-04-04 104 views
0

所以,我有我的舞臺按鈕:JavaFX的綁定鍵按鈕

@FXML 

public void generateButton(ActionEvent event) { 

    String fingerprint = fingerprintText.getText().toLowerCase(); 
    String erg = Verifier.getDdProUnlockPIN(fingerprint); 
    pinField.setText(erg); 
    copyText = erg; 
    log.info("Pin " + erg + "wird generiert"); 
} 

現在我想,當被按下的鍵,但如何將它輸入被觸發?

+0

相關:[使用JavaFX 2.2助記符(HTTP ://stackoverflow.com/questions/12710468/using-javafx-2-2-mnemonic)。請注意,相關的答案是關於加速器而不是助記符。加速器很適合基於常規組合鍵生成動作,但我不知道爲輸入鍵設置加速鍵是一個好主意,因爲回車鍵也用於多行文本字段中的新行,並且我不會不知道在這種情況下輸入鍵加速器的行爲。 – jewelsea

回答

0

拳,設置你的按鈕hanlder:

myButton.setOnAction(e -> {  
     ...... 
}); 

如果按鈕具有焦點,按回車鍵就會自動調用這個處理程序。否則,你可以做到這一點,就啓動方法:

@Override 
public void start(Stage primaryStage) { 
     // ... 
     Node root = ...; 
     setGlobalEventHandler(root); 

     Scene scene = new Scene(root, 0, 0); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
} 

private void setGlobalEventHandler(Node root) { 
    root.addEventHandler(KeyEvent.KEY_PRESSED, ev -> { 
     if (ev.getCode() == KeyCode.ENTER) { 
      myButton.fire(); 
      ev.consume(); 
     } 
    }); 

} 如果你有這樣的只有一個按鈕,你可以改用

myButton.setDefaultButton(true); 
+0

http://stackoverflow.com/questions/32038418/javafx-how-to-bind-the-enter-key-to-a-button-and-fire-off-an-event-when-it-is-c – kinansaeb

+0

我也讀過,但它並沒有真正幫助我...... – kinansaeb

+0

「如果按鈕有焦點,按Enter鍵將自動調用此處理程序。」 < - 實際上,至少在OS X上,這不會發生。按下空格將激發焦點按鈕的操作處理程序,但Enter不會(除非它是默認按鈕或場景級別事件處理程序,則會爲Enter鍵設置過濾器或加速器)。 – jewelsea