我如何收拾回车键被按下的JavaFX2?(How do I pick up the Enter Ke

2019-07-05 07:27发布

我有一个文本字段输入搜索词,一个按钮“转到”。 但在JavaFX2,我将如何使它所以按下Enter在文本字段将执行的操作重点?

谢谢 :)

Answer 1:

您可以使用文本字段的属性的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" />


Answer 2:

我假设你想这是当用户按下输入只有当文本字段具有焦点发生。 您将要使用的KeyEvent出javafx.scene.input,做这样的事情...

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

希望这是有帮助的!



Answer 3:

你可以尝试以下方法:

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


Answer 4:

只需用“lambda表达式”:

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


Answer 5:

这工作:

@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;

import java.awt.event.KeyEvent;

我被抓到了就这个问题和它很刺激。 我只是路过这对那些在同一条船上。



Answer 6:

在某些键盘上,你必须把额外的测试,以“\ n”和“\ r”字符。

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


文章来源: How do I pick up the Enter Key being pressed in JavaFX2?