2015-01-16 56 views
1

我已經搜索了很長時間如何編寫KeyEvent以允許我的按鈕點擊ENTER key。請注意,我正在使用JavaFX和FXML文件。如何在JavaFX項目中使用KeyEvent?

問題是,當在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

如果這是JavaFX中按鈕的默認行爲,我會非常驚訝(也很失望)。我認爲您需要查看[處理JavaFX事件](http://docs.oracle.com/javafx/2/events/jfxpub-events.htm)和[使用JavaFX UI Controls](http:// docs .oracle.com/JavaFX的/ 2/ui_controls/button.htm)。我會非常驚訝,如果像'button2.setOnAction(新EventHandler (){'沒有處理關鍵事件和鼠標事件,就像Swing一樣... – MadProgrammer

+0

好吧,顯然[Enter]不是默認鍵...嘗試類似[this](http://stackoverflow.com/questions/25758782/fire-buttons-onaction-with-enter-in-javafx)代替 – MadProgrammer

回答

5

你必須與你的代碼的幾個問題:

  1. 您正在使用onKeyTyped代替onKeyPressed。欲瞭解更多信息visit this link

  2. 您最有可能使用java.awt.event.KeyEvent,這將不適用於JavaFX events。嘗試使用javafx.scene.input.KeyEvent

    我得出這一結論的原因是因爲JavaFX的不支持KeyEvent.VK_ENTERKeyCode.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); 
    } 
}