teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

説明を修正した。

2015/09/03 02:32

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -1,4 +1,6 @@
1
- 試してみました。
1
+ JDK 1.8.0_60で試してみました。
2
+
3
+ `setCode`はないので、`KeyEvent`を`new`することになる様です。
2
4
  `javafx.event.Event`に、`fireEvent`メソッドがあります。
3
5
  これに`javafx.scene.input.KeyEvent`を渡せば実現できる様です。
4
6
 

1

動作確認したコードを追加した。

2015/09/03 02:32

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -1,3 +1,64 @@
1
- まだせんが、
1
+ した。
2
2
  `javafx.event.Event`に、`fireEvent`メソッドがあります。
3
- これに`javafx.scene.input.KeyEvent`を渡せば実現できませんか?
3
+ これに`javafx.scene.input.KeyEvent`を渡せば実現できる様です。
4
+
5
+ 試したのは、ボタンを押すと、テキストフィールドにKEY_RELEASEDのイベントを送り、
6
+ テキストフィールドで受け取ったら、ラベルにgetCodeした結果を表示するというものです。
7
+ 「下矢印キー」、「Enterキー」を押す様にしています。
8
+
9
+ ```lang-java
10
+ import javafx.application.Application;
11
+ import javafx.event.Event;
12
+ import javafx.geometry.Pos;
13
+ import javafx.scene.Group;
14
+ import javafx.scene.Scene;
15
+ import javafx.scene.control.Button;
16
+ import javafx.scene.control.Label;
17
+ import javafx.scene.control.TextField;
18
+ import javafx.scene.input.KeyCode;
19
+ import javafx.scene.input.KeyEvent;
20
+ import javafx.scene.layout.HBox;
21
+ import javafx.stage.Stage;
22
+
23
+ public class App extends Application {
24
+
25
+ @Override
26
+ public void start(Stage primaryStage) {
27
+ Group root = new Group();
28
+ Scene scene = new Scene(root, 500, 200);
29
+
30
+ HBox hbox = new HBox();
31
+ hbox.setAlignment(Pos.CENTER);
32
+
33
+ Button button = new Button("ボタン");
34
+ Label label = new Label("ラベル");
35
+ TextField textField = new TextField();
36
+
37
+ button.setOnAction((event) -> {
38
+ label.setText("");
39
+ Event.fireEvent(textField, new KeyEvent(KeyEvent.KEY_PRESSED,
40
+ KeyEvent.CHAR_UNDEFINED, "",
41
+ KeyCode.DOWN, false, false, false, false));
42
+ Event.fireEvent(textField, new KeyEvent(KeyEvent.KEY_PRESSED,
43
+ KeyEvent.CHAR_UNDEFINED, "\n",
44
+ KeyCode.ENTER, false, false, false, false));
45
+ });
46
+ textField.setOnKeyPressed((event) -> {
47
+ label.setText(label.getText() + "\nKey Pressed: " + event.getCode());
48
+ });
49
+
50
+ hbox.getChildren().add(button);
51
+ hbox.getChildren().add(textField);
52
+ hbox.getChildren().add(label);
53
+
54
+ ((Group) scene.getRoot()).getChildren().add(hbox);
55
+
56
+ primaryStage.setTitle("Button Test");
57
+ primaryStage.setScene(scene);
58
+ primaryStage.show();
59
+ }
60
+ public static void main(String[] args) {
61
+ launch(args);
62
+ }
63
+ }
64
+ ```