javafx
ボタン
サーチ…
アクションリスナーの追加
ボタンがアクティブになるとアクションイベントが発生します(たとえば、クリック、ボタンのキーバインドが押されたなど)。
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割り当てられたアクセラレータのリストにアクセスしたり、キーイベントを明示的に聴取したりする必要なく、共通のキーボードショートカットをボタンに簡単に割り当てることができます。つまり、 setDefaultButtonとsetCancelButton 2つの便利なメソッドが用意されています。
setDefaultButtonをtrue設定すると、KeyCode.ENTERイベントを受け取るたびにButtonがKeyCode.ENTERます。setCancelButtonをtrue設定すると、KeyCode.ESCAPEイベントを受け取るたびにButtonがsetCancelButtonしtrue。
次の例では、入力またはエスケープキーが押されたときに、フォーカスされているかどうかに関係なく起動される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();
});