質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

Q&A

解決済

1回答

10347閲覧

【JavaFX】【イベント】キーボード入力を検出するのではなく、キータイプをさせたい。

mori02

総合スコア35

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

0グッド

1クリップ

投稿2015/09/02 06:49

編集2015/09/02 06:52

JavaFXでボタンが1つある画面があります。

ボタンを押す事によって「下矢印キー」、「Enterキー」と続いてキータイプをさせたいのですが、Googleで検索を行うも「setCode()」のようなイベントが見つけれていない状態でございます。

上記のイベント名をお分かりの方がいらっしゃいましたら、ご指導いただけないでしょうか。
どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JDK 1.8.0_60で試してみました。

setCodeはないので、KeyEventnewすることになる様です。
javafx.event.Eventに、fireEventメソッドがあります。
これにjavafx.scene.input.KeyEventを渡せば実現できる様です。

試したのは、ボタンを押すと、テキストフィールドにKEY_RELEASEDのイベントを送り、
テキストフィールドで受け取ったら、ラベルにgetCodeした結果を表示するというものです。
「下矢印キー」、「Enterキー」を押す様にしています。

lang

1import javafx.application.Application; 2import javafx.event.Event; 3import javafx.geometry.Pos; 4import javafx.scene.Group; 5import javafx.scene.Scene; 6import javafx.scene.control.Button; 7import javafx.scene.control.Label; 8import javafx.scene.control.TextField; 9import javafx.scene.input.KeyCode; 10import javafx.scene.input.KeyEvent; 11import javafx.scene.layout.HBox; 12import javafx.stage.Stage; 13 14public class App extends Application { 15 16 @Override 17 public void start(Stage primaryStage) { 18 Group root = new Group(); 19 Scene scene = new Scene(root, 500, 200); 20 21 HBox hbox = new HBox(); 22 hbox.setAlignment(Pos.CENTER); 23 24 Button button = new Button("ボタン"); 25 Label label = new Label("ラベル"); 26 TextField textField = new TextField(); 27 28 button.setOnAction((event) -> { 29 label.setText(""); 30 Event.fireEvent(textField, new KeyEvent(KeyEvent.KEY_PRESSED, 31 KeyEvent.CHAR_UNDEFINED, "", 32 KeyCode.DOWN, false, false, false, false)); 33 Event.fireEvent(textField, new KeyEvent(KeyEvent.KEY_PRESSED, 34 KeyEvent.CHAR_UNDEFINED, "\n", 35 KeyCode.ENTER, false, false, false, false)); 36 }); 37 textField.setOnKeyPressed((event) -> { 38 label.setText(label.getText() + "\nKey Pressed: " + event.getCode()); 39 }); 40 41 hbox.getChildren().add(button); 42 hbox.getChildren().add(textField); 43 hbox.getChildren().add(label); 44 45 ((Group) scene.getRoot()).getChildren().add(hbox); 46 47 primaryStage.setTitle("Button Test"); 48 primaryStage.setScene(scene); 49 primaryStage.show(); 50 } 51 public static void main(String[] args) { 52 launch(args); 53 } 54}

投稿2015/09/02 08:37

編集2015/09/03 02:32
eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mori02

2015/09/03 03:01

ありがとうございます。 すごく悩んでいた内容だったので本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問