我有一个文本字段输入搜索词,一个按钮“转到”。 但在JavaFX2,我将如何使它所以按下Enter在文本字段将执行的操作重点?
谢谢 :)
我有一个文本字段输入搜索词,一个按钮“转到”。 但在JavaFX2,我将如何使它所以按下Enter在文本字段将执行的操作重点?
谢谢 :)
您可以使用文本字段的属性的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" />
我假设你想这是当用户按下输入只有当文本字段具有焦点发生。 您将要使用的KeyEvent出javafx.scene.input,做这样的事情...
textField.setOnKeyPressed(new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent ke)
{
if (ke.getCode().equals(KeyCode.ENTER))
{
doSomething();
}
}
});
希望这是有帮助的!
你可以尝试以下方法:
@FXML
public void buttonPressed(KeyEvent e)
{
if(e.getCode().toString().equals("ENTER"))
{
//do something
}
}
只需用“lambda表达式”:
TextField textField = new TextField();
textField.setOnAction(e -> {
// add your code to be run here
System.out.println("textFile");
});
这工作:
@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;
我被抓到了就这个问题和它很刺激。 我只是路过这对那些在同一条船上。
在某些键盘上,你必须把额外的测试,以“\ n”和“\ r”字符。
if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r') {
// your action
}