2016-05-27 5 views
0

JavaFxで簡単なPongゲームを作成しました。しかし、私はコントロールを設定することに問題があります。 SS:文字が押されているタイプのキーは、それはそうのようなテキストフィールドにduplicetesたび、しかしJavaFx KeyPressedイベントがまだTextFieldにあります

control_0.setOnKeyPressed(new EventHandler<KeyEvent>() 
     { 
      @Override 
      public void handle(KeyEvent ke) 
      { 
       control_0.setText(ke.getCode().toString()); 
       om.setControls(0,ke.getCode().toString()); 
       ke.consume(); 
      } 
     }); 

:私はこのようなTextFieldを使用しています。

control_0.setText(""); 
om.setControls(0,ke.getCode().toString()); 

とハンドル()コードの交換 は、そのの世話をする(彼らはゲーム内働くんが)しかしのTextFieldのキーと同様のショーは何も矢印します。この問題を一貫して解決するにはどうしたらいいですか?

答えて

0

実際にはTextFieldは必要ないようです。 TextFieldLabelに置き換えて、イベントハンドラをSceneに追加するだけです。

あなたがTextFieldを使用して主張しなければしかし、あなたはTextFieldのテキストを変更し、デフォルトEventHandlerに達することから、イベントを防ぐために、すべてのKeyEvent秒間フィルタイベントを使用することができます。

control_0.addEventFilter(KeyEvent.ANY, evt -> { 
    if (evt.getEventType() == KeyEvent.KEY_PRESSED) { 
     control_0.setText(evt.getCode().toString()); 
    } 
    evt.consume(); 
}); 
+0

もまず、シーンの他のコンポーネントからフォーカスを削除する必要があります。私はちょっとsetText()、setText()だけKEY_TYPEDとRELEASEDの両方でconsume()、両方のsetText()を参照してください、まだちょうどテキストを設定する必要があります追加してください) –

関連する問題