Подтвердить что ты не робот

JavaFx: граница кнопок и зависание

Я использую Java 8. У меня есть панель инструментов и кнопки на нем.

Я хочу реализовать следующее:

  • В обычном состоянии (без наведения мыши) на панели инструментов нужно видеть только ярлык кнопки (без фона и границ).
  • Когда пользовательская мышь нависает над кнопкой, тогда должна отображаться обычная кнопка.

Как это сделать через css?

4b9b3361

Ответ 1

Используйте стили для удаления фона:

.button {
    -fx-background-color: transparent;
}

При наведении, чтобы вернуть все, просто используйте стиль кнопки из modena.css:

.button:hover{
    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
    -fx-background-radius: 3px, 3px, 2px, 1px;
    -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */
    -fx-text-fill: -fx-text-base-color;
    -fx-alignment: CENTER;
    -fx-content-display: LEFT;
}

Ответ 2

Я согласен с netzwerg. Если вы используете fxml с javafx, тогда вы должны включить эти строки кодов в метод initialize() вашего класса контроллера.

Пример класса контроллера:

public class Controller implements Initializable{
    private Button test;
    private static final String IDLE_BUTTON_STYLE = "-fx-background-color: transparent;";
    private static final String HOVERED_BUTTON_STYLE = "-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;";

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        button.setStyle(IDLE_BUTTON_STYLE);
        button.setOnMouseEntered(e -> button.setStyle(HOVERED_BUTTON_STYLE));
        button.setOnMouseExited(e -> button.setStyle(IDLE_BUTTON_STYLE));
    }
}

Ответ 3

Фоновая прозрачность может управляться с помощью прослушивателей мыши, т.е. путем программирования CSS (что облегчает необходимость в внешней таблице стилей):

final String IDLE_BUTTON_STYLE = "-fx-background-color: transparent;";
final String HOVERED_BUTTON_STYLE = "-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;";


button.setStyle(IDLE_BUTTON_STYLE);
button.setOnMouseEntered(e -> button.setStyle(HOVERED_BUTTON_STYLE));
button.setOnMouseExited(e -> button.setStyle(IDLE_BUTTON_STYLE));