Какой Property отвечает за наведение на кнопку

290
21 ноября 2017, 21:26

хочу чтобы когда на Button JavaFX наводился курсор, он подсвечивалась. Как это сделать? Не нашел подходящего Property.

Answer 1

Если вы хотите просто стиль поменять при наведения курсора то Вы можете достичь этого с помощю css, просто задав нужный вам параметр в псевдоклассе :hover.

.your-class:hover {
// some parameters
}

то есть Вам надо будет записать стили в css файл и подключить его как описано тут. Потом добавить класс стиля или идентификацию в Button.

style.css файл

.my-button:hover {
    -fx-background-color: green;
}

Вот и java класс.

package styled.button;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class StyledButton extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane anchorPane = new AnchorPane();
        anchorPane.getStylesheets()
                .add(getClass().getResource("/style.css").toExternalForm());
        Button button = new Button("Hover Button");
        button.getStyleClass().add("my-button");
        anchorPane.getChildren().add(button);
        primaryStage.setScene(new Scene(anchorPane, 400, 600));
        primaryStage.show();
    }
}

При наведения курсора задний фон кнопки изменится на зеленый.

или же это можно сделать программно:

package button.hover;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class ButtonHover extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane anchorPane = new AnchorPane();
        Button button = new Button("Hover Button");
        button.setOnMouseEntered(event -> {
            button.setStyle("-fx-background-color: green");
        });
        button.setOnMouseExited(event -> button.setStyle(""));
        anchorPane.getChildren().add(button);
        primaryStage.setScene(new Scene(anchorPane, 400, 600));
        primaryStage.show();
    }
}
Answer 2

onMouseEntered:

Определяет функцию, которая будет вызываться, когда мышь над элементом.

READ ALSO
Почему NullPointerException, при попытке вызвать поток?

Почему NullPointerException, при попытке вызвать поток?

Я создал отдельный класс потока, который должен рисовать некоторый текст в окне

320
Logger и Log в Android

Logger и Log в Android

В библиотеке https://githubcom/kochedykov/jlibmodbus/blob/master/src/com/invertor/modbus/Modbus

244
Как сделать плавное движение строки по Canvas?

Как сделать плавное движение строки по Canvas?

Я написал отдельный класс потока, в котором двигаю строку по канвасуИ проблема в том, что если я делаю

233