HOWTO · Java

JavaFX で KeyEvent を使用する

このチュートリアルでは、キー イベントを作成し、ユーザーが JavaFX でキーを押したときに簡単なコードを実行する方法を示します。

このページの内容

KeyEvent は、キーが押されたことを検出し、キーが押されたときに特定のコード ブロックを実行するために使用されます。

この記事では、キー イベントを作成し、ユーザーがキーを押したときに簡単なコードを実行する方法を示します。 また、理解しやすいように簡単な例も示します。

JavaFX で KeyEvent を使用する

キー イベントを作成するための一般的な形式を以下に示します。

scene.setOnKeyPressed(
    (KeyEvent event)
        -> {
            // Create a key event that execute when any key pressed from your keyboard
            //  Add the actions that we are going to take when a key pressed.
        });

ユーザーのキー押下を検出し、キーが押されたというメッセージを表示する例を見ていきます。

この例のソース コードは次のようになり、必要なコマンドを提供して各行を説明します。 みてみましょう。

import javafx.application.Application; // Package to create application
import javafx.scene.Scene; // Package to create a scene
import javafx.scene.control.Label; // Package to create a label
import javafx.scene.input.KeyEvent; // Package to create a key event
import javafx.scene.layout.HBox; // Package for the Hbox
import javafx.stage.Stage; // Package to create a stage

public class FxKeyListen extends Application {
  Label lbl; // Declares a label
  HBox _hbox; // Declares a HBox.

  public void start(Stage SimpleStage) throws Exception {
    SimpleStage.setTitle(
        "Detect key event"); // Set the application title which is "Detect key event"
    lbl =
        new Label("No key is pressed !!!"); // Create a label with default text "No key pressed !!!"
    _hbox = new HBox(lbl); // Create a HBox  with a label
    Scene scene = new Scene(_hbox, 400, 400); // Create a scene with HBox and necessary dimentions.

    scene.setOnKeyPressed(
        (KeyEvent event)
            -> { // Create a key event that execute when any key pressed from your keyboard
          lbl.setText("Key press detected !!!"); // The actions that we are going to take when a key
                                                 // pressed. In our case we are changing the label
                                                 // text to "Key press detected !!!"
        });
    SimpleStage.setScene(scene); // Set the scene
    SimpleStage.show(); // Visualize the scent
  }

  public static void main(String[] args) {
    Application.launch(args); // Run our application
  }
}

私たちはすでに各行の目的を命じました。 それでは、コードがどのように機能するかを説明しましょう。

キーが押されていません!!! というデフォルトのテキストを使用して、コードにラベルを作成しました。 行 lbl = new Label ("キーが押されていません!!!");. このラベルは、キーが押されていないことをユーザーに示すことを目的としています。

次に、ユーザーがキーボードからキーを押したときに実行されるアクションとして、単純な keypress イベントを作成しました。 ラベルのデフォルト テキストを変更し、Key press detected !!! に設定します。 したがって、この目的のために、コードは lbl.setText("Key press detected !!!"); のようなアクションとして追加します。

コンパイルが成功した後にコードを実行すると、Detect key event というタイトルのウィンドウが開き、キーボードからキーを押すと、以下のような出力が表示されます。

出力:

javafx キーリスナー出力

IDE がライブラリの自動インクルードをサポートしていない場合は、覚えておいてください。 次に、コンパイルする前に、必要なライブラリ ファイルを手動で含める必要がある場合があります。