如何选择在JavaFX 2中按下的Enter键?

时间:2012-12-14 14:29:40

标签: java user-interface javafx-2 javafx

我有一个TextField用于输入搜索词,还有一个用于“Go”的按钮。但是在JavaFX2中,如何按下TextField中的Enter键来执行操作呢?

谢谢:)

6 个答案:

答案 0 :(得分:68)

我假设您希望在用户仅在TextField具有焦点时按Enter键时才会发生这种情况。你需要使用javafx.scene.input中的KeyEvent并做这样的事情......

textField.setOnKeyPressed(new EventHandler<KeyEvent>()
    {
        @Override
        public void handle(KeyEvent ke)
        {
            if (ke.getCode().equals(KeyCode.ENTER))
            {
                doSomething();
            }
        }
    });

希望这有用!

答案 1 :(得分:30)

您可以使用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" />

答案 2 :(得分:7)

您可以尝试以下操作:

@FXML
public void buttonPressed(KeyEvent e)
{
    if(e.getCode().toString().equals("ENTER"))
    {
        //do something
    }
}

答案 3 :(得分:4)

只需使用“lambda表达式”:

TextField textField = new TextField();
textField.setOnAction(e -> {
    // add your code to be run here
    System.out.println("textFile");
    });

答案 4 :(得分:1)

This works:

@FXML public TextField txt;

@FXML
public void textAction(KeyEvent e){

    if(e.getCode().equals(KeyCode.ENTER))
        System.out.println(txt.getText());
}

If for some reason .getCode() is not working, make sure you import the library:

import javafx.scene.input.KeyEvent;

NOT

import java.awt.event.KeyEvent;

I got caught up on this and it was irritating. Im just passing this on for all those in the same boat.

答案 5 :(得分:0)

在某些键盘上,您必须为&#39; \ n&#39;添加其他测试。和&#39; \ r&#39;字符。

if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
        // your action
    }