Насколько я понимаю, применяются стили, заданные :hover
и :pressed
, но градиенты, которые вы используете в стиле по умолчанию, не поддерживаются. Это имеет смысл, поскольку:
#bevel-grey:hover {
-fx-background-color: #981100;
}
Заменяет цвет фона (фона), объявленный:
#bevel-grey {
-fx-background-color: linear-gradient(#f2f2f2, #d6d6d6), linear-gradient(#fcfcfc 0%, #d9d9d9 20%, #d6d6d6 100%), linear-gradient(#dddddd 0%, #f6f6f6 50%);
/* ... omitted for brevity ... */
}
То же самое в отношении #bevel-grey:pressed
. Вам нужно изменить цвета, используемые линейными градиентами, если вы хотите продолжать использовать линейные градиенты. Очевидный способ сделать это - просто повторно объявить linear-gradient(...)
цвета фона для каждого псевдокласса, но используя новые цвета градиента. Однако, на мой взгляд, более приемлемым решением является использование так называемых «искомых цветов» . Вот пример:
#bevel-grey {
-fx-color-one: #d6d6d6;
-fx-color-two: #d9d9d9;
-fx-color-three: #f6f6f6;
-fx-background-color:
linear-gradient(#f2f2f2, -fx-color-one),
linear-gradient(#fcfcfc 0%, -fx-color-two 20%, -fx-color-one 100%),
linear-gradient(#dddddd 0%, -fx-color-three 50%);
-fx-background-radius: 8, 7, 6;
-fx-background-insets: 0, 1, 2;
-fx-text-fill: black;
-fx-effect: dropshadow( three-pass-box, rgba(0, 0, 0, 0.6), 5, 0.0, 0, 1);
}
#bevel-grey:hover {
-fx-color-one: #981100;
-fx-color-two: #981100;
-fx-color-three: #981100;
}
#bevel-grey:pressed {
-fx-color-one: #235891;
-fx-color-two: #235891;
-fx-color-three: #235891;
}
Мне пришлось угадать с некоторыми значениями цвета, так как я не совсем уверен, как вы хотите, чтобы конечный результат выглядел. Приведенный выше CSS дает следующий вывод:
В качестве альтернативы рассмотрите возможность использования :armed
вместо :pressed
для кнопки управления. Псевдокласс :pressed
активируется только при нажатии мыши, в то время как кнопка может быть активирована дополнительными действиями (например, нажатием клавиши Пробел или Ввод , когда кнопка находится в фокусе ).