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 может быть любой узел JavaFX, например ProgressBar
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 as (который устанавливает textProperty Button ):
Button sampleButton = new Button("Click Me!");
Если вы хотите создать Button с графикой внутри или любым другим Node , используйте этот конструктор:
Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));
Кнопки по умолчанию и Отмена
Button API предоставляет простой способ назначить общие сочетания клавиш кнопкам без необходимости доступа к списку ускорителей, назначенных для Scene или явно прослушиванию ключевых событий. А именно, предоставляются два удобных метода: setDefaultButton и setCancelButton :
Установка
setDefaultButtonв значениеtrueприведет к срабатываниюButtonпри каждом событииKeyCode.ENTER.Установка
setCancelButtonв значениеtrueприведет к срабатываниюButtonкаждый раз, когда он получает событиеKeyCode.ESCAPE.
В следующем примере создается 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();
});