サーチ…


アクションリスナーの追加

ボタンがアクティブになるとアクションイベントが発生します(たとえば、クリック、ボタンのキーバインドが押されたなど)。

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello World!");
    }
});

Java 8+を使用している場合は、アクションリスナーにlambdasを使用できます。

button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));

ボタンにグラフィックを追加する

ボタンはグラフィックを持つことができます。 graphicは、 ProgressBarような任意のJavaFXノードにすることができます

button.setGraphic(new ProgressBar(-1));

ImageView

button.setGraphic(new ImageView("images/icon.png"));

または別のボタン

button.setGraphic(new Button("Nested button"));

ボタンを作成する

Button作成は簡単です:

Button sampleButton = new Button();

これにより、内部にテキストやグラフィックを含まない新しいButtonが作成されます。

テキスト付きのButtonを作成する場合は、パラメータとしてStringをとるコンストラクタを使用します( Button textPropertyを設定します)。

Button sampleButton = new Button("Click Me!");

グラフィックを内部または他のNode内に持つButtonを作成する場合は、次のコンストラクタを使用します。

Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));

デフォルトおよびキャンセルボタン

Button APIを使用すると、 Scene割り当てられたアクセラレータのリストにアクセスしたり、キーイベントを明示的に聴取したりする必要なく、共通のキーボードショートカットをボタンに簡単に割り当てることができます。つまり、 setDefaultButtonsetCancelButton 2つの便利なメソッドが用意されています。

  • setDefaultButtontrue設定すると、 KeyCode.ENTERイベントを受け取るたびにButtonKeyCode.ENTERます。

  • setCancelButtontrue設定すると、 KeyCode.ESCAPEイベントを受け取るたびにButtonsetCancelButtontrue

次の例では、入力またはエスケープキーが押されたときに、フォーカスされているかどうかに関係なく起動される2つのボタンを持つSceneを作成します。

FlowPane root = new FlowPane();
        
Button okButton = new Button("OK");
okButton.setDefaultButton(true);
okButton.setOnAction(e -> {
    System.out.println("OK clicked.");
});
        
Button cancelButton = new Button("Cancel");            
cancelButton.setCancelButton(true);
cancelButton.setOnAction(e -> {
    System.out.println("Cancel clicked.");
});
        
root.getChildren().addAll(okButton, cancelButton);
Scene scene = new Scene(root);

これらのKeyEventsが親Nodeによって消費された場合、上記のコードは機能しません:

scene.setOnKeyPressed(e -> {
    e.consume();
});


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow