Сегодня меня спросили, знаю ли я, как избавиться от выделения фокуса элементов управления JavaFX (соответственно кнопок):
Большинство постов и советов по этой проблеме предлагают добавить:
|
1
2
3
|
.button:focused { -fx-focus-color: transparent; } |
Но с этим стилем, сияние как это все еще остается:
Чтобы избавиться от этого свечения, также часто предлагается поиграть с -fx-background-insets дополнительно:
|
1
2
3
4
|
.button:focused { -fx-focus-color: transparent; -fx-background-insets: -1.4, 0, 1, 2;} |
Но это приводит к кнопке, отображаемой без внешней границы:
По сравнению со стилем кнопок по умолчанию:
это все еще своего рода «выделение».
Почему это? (И почему на самом деле есть 4 значения вставки?)
Если посмотреть на стиль JavaFX по умолчанию, определенный modena.css то modena.css немного больше информации:
|
1
2
3
4
5
6
|
/* A bright blue for the focus indicator of objects. Typically used as the* first color in -fx-background-color for the "focused" pseudo-class. Also* typically used with insets of -1.4 to provide a glowing effect.*/-fx-focus-color: #f25f29;-fx-faint-focus-color: #f25f2933; |
Очевидно, что существует не только один цвет фокуса -fx-focus-color но также -fx-faint-focus-color который предназначен для создания этого эффекта свечения (который остается при установке -fx-focus-color:transparent; ).
Присмотритесь к псевдоклассу .button: focus (в modena.css ):
|
1
2
3
4
5
|
.button:focused { -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-inner-border, -fx-body-color; -fx-background-insets: -2, -0.3, 1, 2; -fx-background-radius: 7, 6, 4, 3;} |
Игра с какой-то экстремальной окраской раскрывает аранжировку:
|
01
02
03
04
05
06
07
08
09
10
|
.button:focused { -fx-focus-color: red; -fx-faint-focus-color: green; -fx-inner-border: blue; -fx-body-color: orange; -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-inner-border, -fx-body-color; -fx-background-insets: -2, -0.3, 1, 2; -fx-background-radius: 7, 6, 4, 3;} |
Возвращаясь к теме, может быть, умный способ убрать выделение фокуса — это использовать стили кнопок по умолчанию также для .button: focus (такой же подход для других элементов управления):
|
1
2
3
4
5
|
.button:focused { -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; -fx-background-insets: 0, 1, 2; -fx-background-radius: 5, 4, 3;} |
| Ссылка: | Как избавиться от выделения фокуса в JavaFX от нашего партнера JCG Дженса Детерса в блоге JavaFX Delight . |




