2017-04-04 102 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