如何在JavaFX项目中使用KeyEvent?

我已经搜索了很长时间,如何编写一个KeyEvent来允许我按下ENTER按钮.请注意,我正在使用JavaFX和FXML文件.

问题是,当在FXML文件的onKeyTyped文本字段中设置时,FXML文件不接受它.它说没有找到Handle方法.它只是接受ActionEvent方法,所以我尝试了这段代码:

 @FXML
 private void key (KeyEvent evt) throws IOException{ 
       if (evt.getCode() == KeyEvent.VK_ENTER){
       String az = text1.getText();
       //c.1
       if(az.contains("1")){ 
          String hh = text11.getText();
          Socket socket = null;
          InetSocketAddress isa = new InetSocketAddress (hh,80);  
       } 
    }
}

那么请有人帮助我吗?

解决方法:

您的代码几乎没有问题:

>您使用的是onKeyTyped而不是onKeyPressed.有关更多信息visit this link
>您最有可能使用java.awt.event.KeyEvent,它不适用于JavaFX事件.尝试使用javafx.scene.input.KeyEvent.

我得出这个结论的原因是因为JavaFX不支持KeyEvent.VK_ENTER而是拥有KeyCode.ENTER

下面显示了一个具体示例,您可以使用相同的方法将其转换为FXML:

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ButtonExample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane pane = new BorderPane();
        Button button = new Button("Press Me!");
        pane.setCenter(button);
        Scene scene = new Scene(pane, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();

        button.setOnKeyPressed(new EventHandler<KeyEvent>() {

            @Override
            public void handle(KeyEvent event) {
                if (event.getCode() == KeyCode.ENTER) {
                    System.out.println("Enter Pressed");
                }
            }
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}
上一篇:Java-NetBeans打开项目问题


下一篇:Java-Netbeans:更改主类以生成JAR,同时排除原始主类