簡體   English   中英

如何在JavaFX項目中使用KeyEvent?

[英]How to use KeyEvent in JavaFX project?

我已經搜索了很長時間,如何編寫一個KeyEvent來允許我按下ENTER key按鈕。 請注意,我正在使用JavaFX和FXML文件。

問題是,當在FXML文件的onKeyTyped文本字段中設置時,FXML文件不接受它。 它說Handle method not found 它只是接受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);  
       } 
    }
}

那么請有人幫助我嗎?

您的代碼幾乎沒有問題:

  1. 您正在使用onKeyTyped而不是onKeyPressed 有關更多信息, 請訪問此鏈接

  2. 您最有可能使用java.awt.event.KeyEvent ,它將不適用於JavaFX events 嘗試使用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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM