JavaFXでボタンが1つある画面があります。
ボタンを押す事によって「下矢印キー」、「Enterキー」と続いてキータイプをさせたいのですが、Googleで検索を行うも「setCode()」のようなイベントが見つけれていない状態でございます。
上記のイベント名をお分かりの方がいらっしゃいましたら、ご指導いただけないでしょうか。
どうぞよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
JDK 1.8.0_60で試してみました。
setCode
はないので、KeyEvent
をnew
することになる様です。
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総合スコア1546
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/03 03:01