2

I have some Text Field on a dialog when use input data in Text Field.

I want to check if the user pressed the enter key and, then, save this data. But, if the enter key is not pressed to set back to the old data.

Currently, I use javaFx to code.

vxba
  • 69
  • 1
  • 1
  • 6

5 Answers5

8

I register a listener (here Java 8 lambda version) at the textfield:

filterTextField.setOnKeyReleased(event -> {
  if (event.getCode() == KeyCode.ENTER){
     // do what is to do
  }
});
belwood
  • 3,320
  • 11
  • 38
  • 45
1

Try this, it handles Enter keypress by default.

TextField tf = new TextField();
String tfData = "";

tf.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
            tfData = tf.getText();
    }
});
jogo
  • 12,469
  • 11
  • 37
  • 42
pheamit
  • 27
  • 2
  • 8
0

I know this is already an old thread but I hope this helps someone.

textField.setOnKeyPressed(new 
EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {

if(event.getCode().equals(
KeyCode.ENTER) 
) {
         // do something
    }
}
});
Wilson
  • 1,259
  • 11
  • 17
0

Very easy check this, the easiest way is go to your text field code in scene builder then give a name to " On Key Pressed " Keyboard Proprieties and paste the FXML method in your FXML Controller Class then add this:

@FXML
    void the_name_of_the_method(KeyEvent event) {
        if(event.getCode() == KeyCode.ENTER) {
            do_what_ever_you_want_here();
        }

    }
0

In older version of Java you could write something like this: for example lets suppose you have a ComboBox<String> with some random values... so you can simple add an event on that ComboBox (call it cBox)

cBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
  @Override
  public void handle(KeyEvent keyEvent) {
    if (keyEvent.getCode().equals(KeyCode.ENTER)) {
      // do what you want
    }
  }
});

But from Java 1.8 you can use lambda functions instead so you could replace the above code with this:

cBox.setOnKeyPressed(keyEvent -> {
   if (keyEvent.getCode().equals(KeyCode.ENTER)) {
      // do what you want
   }
});

Don't forget to use equals instead of ==. (https://www.geeksforgeeks.org/difference-equals-method-java/)