start
メソッド内でイベント登録メソッドsetOnKeyPressed
を2回使用しようとしていますが、最初に呼び出すメソッドは機能しません。 たとえば、このコードを実行してキーボードからキーをクリックすると、Wow Wow Wow
は印刷されません。そして、私が他の方法を最初に呼び出すと、コードを実行してキーボードをクリックすると、ペインに何も表示されませんが、Wow Wow Wow
がコンソールに表示されます。どうしてか分かりません!javaFxのstartメソッド内でsetOnKeyPressedを2回使用するにはどうすればよいですか?
は、ここでは、コードです:
public class Test extends Application {
String sms = "";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Pane pane = new Pane();
Text txt = new Text();
txt.setLayoutX(30);
txt.setLayoutY(30);
pane.getChildren().add(txt);
pane.setOnKeyPressed(e -> {
System.out.println("Wow Wow Wow");
});
pane.setOnKeyPressed(e -> {
sms = sms + e.getText();
txt.setText(sms);
});
Scene scene = new Scene(pane, 300, 300);
stage.setScene(scene);
stage.setResizable(false);
stage.show();
pane.requestFocus();
}
}
onKeyPressedは他のプロパティと同様にプロパティです。あるものに設定してすぐに別のものに設定すると、その値が2番目のものになります。複数のイベントハンドラを追加したい場合は、 'addEventHandler(...) 'を使用してください。 –
これはうまくいった!どうもありがとう、本当にありがとうございます。 –
同じコードをonKeyReleasedハンドラに入れることができます。 – Sedrick