如何在JavaFX2中选择按下的Enter键?
我有一个文本字段来输入搜索词,还有一个“Go”按钮。但是在JavaFX2中,我如何使按下TextField中的Enter键可以执行一个操作呢如何在JavaFX2中选择按下的Enter键?,java,user-interface,javafx-2,javafx,Java,User Interface,Javafx 2,Javafx,我有一个文本字段来输入搜索词,还有一个“Go”按钮。但是在JavaFX2中,我如何使按下TextField中的Enter键可以执行一个操作呢 谢谢:)我假设当用户只在文本字段有焦点时按enter键时,您希望发生这种情况。您需要使用javafx.scene.input包中的KeyEvent并执行如下操作: field.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(K
谢谢:)我假设当用户只在
文本字段有焦点时按enter键时,您希望发生这种情况。您需要使用javafx.scene.input
包中的KeyEvent
并执行如下操作:
field.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.ENTER)) {
doSomething();
}
}
});
您可以使用TextField的onAction属性并将其绑定到控制器中的方法
@FXML
public void onEnter(ActionEvent ae){
System.out.println("test") ;
}
在FXML文件中:
<TextField fx:id="textfield" layoutX="29.0" layoutY="298.0" onAction="#onEnter" prefWidth="121.0" />
您可以尝试以下方法:
@FXML
public void buttonPressed(KeyEvent e)
{
if(e.getCode().toString().equals("ENTER"))
{
//do something
}
}
这项工作:
@FXML public TextField txt;
@FXML
public void textAction(KeyEvent e){
if(e.getCode().equals(KeyCode.ENTER))
System.out.println(txt.getText());
}
如果由于某种原因.getCode()不起作用,
请确保导入库:
import javafx.scene.input.KeyEvent;
不是
我被这件事缠住了,很恼人。我只是把这句话传给同一条船上的所有人。简单地用“lambda表达式”:
TextField textField = new TextField();
textField.setOnAction(e -> {
// add your code to be run here
System.out.println("textFile");
});
在某些键盘上,您必须对“\n”和“\r”字符进行附加测试
if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
// your action
}
是的,onAction方法似乎是一种方法:->+1,但是当从FXML“绑定”时,需要用@FXML注释onEnter()方法,并且它必须采用ActionEvent参数,AFAIK。注意,我必须添加(ActionEvent ActionEvent)
作为onEnter
上的一个参数,它才起作用。Javadoc是此类问题的一个很好的来源:Aaah Stack Overflow,俗话说:“给一个人一条鱼,他们吃一天,但教他们钓鱼,他们吃一辈子。”但常见的SO回答更多地是这样的:“我说,好先生,有一个地方有书,查钓鱼,努力学习和练习,两个月后你就可以吃饭了。”用意很好,但没用。更好的用法:ke.getCode()==KeyCode.ENTER
因为它是一个枚举。光是它是不起作用的,FXML是用来做什么的?
TextField textField = new TextField();
textField.setOnAction(e -> {
// add your code to be run here
System.out.println("textFile");
});
if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
// your action
}