今天,有人问我是否知道摆脱JavaFX控件(分别是按钮)的焦点突出的方法:
有关此问题的大多数文章和提示建议添加:
.button:focused {
-fx-focus-color: transparent;
}
但是使用这种样式,仍然会留下这样的光芒:
为了摆脱这种光芒,通常还建议额外使用-fx-background-insets
:
.button:focused {
-fx-focus-color: transparent;
-fx-background-insets: -1.4, 0, 1, 2;
}
但这导致呈现的按钮没有外部边框:
与默认按钮样式相比:
这仍然是一种“突出”。
(为什么实际上有4个插入值?)
看一下modena.css
定义的JavaFX默认样式,可以modena.css
更多信息:
/* 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:focused伪类(在modena.css
):
.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;
}
玩一些极端的色彩可以揭示这种安排:
.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也使用默认按钮样式(其他控件使用相同的方法):
.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;
}
翻译自: https://www.javacodegeeks.com/2014/11/how-to-get-rid-of-focus-highlighting-in-javafx.html