我有一个TextField用于输入搜索词,还有一个用于“Go”的按钮。但是在JavaFX2中,如何按下TextField中的Enter键来执行操作呢?
谢谢:)
答案 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
}