我正在尝试删除选中JavaFX按钮时默认显示的边框发光(请参见下面的屏幕截图):

我也希望使用CSS来实现这一点,而不是在主JavaFX脚本中以声明方式实现.但是,我无法弄清楚我需要使用什么CSS属性(呃,设置为0?)才能删除该边框.
jew*_*sea 76
要从代码中的任何控件中删除聚焦环显示:
control.setStyle("-fx-focus-color: transparent;");
Run Code Online (Sandbox Code Playgroud)
要删除所有控件的聚焦环,请应用样式表:
.root { -fx-focus-color: transparent; }
Run Code Online (Sandbox Code Playgroud)
要仅删除所有按钮的响铃,请使用:
.button { -fx-focus-color: transparent; }
Run Code Online (Sandbox Code Playgroud)
我发现-fx-focus-color属性设置比依靠一些奇怪的插图组合去除焦点环更直接.
此外,您可以使用相同的设置将聚焦环更改为其他颜色,例如-fx-focus-color: firebrick.
2015年1月20日更新
JavaFX 8附带了一个新的默认用户代理样式表(modena).这个新的用户代理样式表附带了一个焦点亮点的附加设置:-fx-faint-focus-color.对于Java 8个应用程序,有必要同时设置-fx-focus-color并且-fx-faint-focus-color以透明以除去聚焦环的所有痕迹.请参阅good4m对此问题的回答.
2015年12月10日更新
如果您只按照此答案中的先前建议将焦点颜色设置为透明,对于某些控件,您可能会看到控件聚焦时和不控制时之间的细微区别.对于许多应用来说,这不是问题,将焦点颜色设置为透明就足够了.
有关更多信息和备用解决方案,请查看James_D对JavaFX输入字段中删除蓝框的回答以及Jens Deter关于如何摆脱JavaFX中焦点突出显示的博客文章.请注意,遗憾的是,Jens Deter的博客链接有一些烦人的弹出窗口.
JP_*_*JP_ 57
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
Run Code Online (Sandbox Code Playgroud)
She*_*gar 19
有几种方法可以做到这一点.你可以尝试任何一个.
button.setStyle("-fx-focus-color: transparent;");
Run Code Online (Sandbox Code Playgroud)
要么
.button{
-fx-focus-color: transparent;
}
Run Code Online (Sandbox Code Playgroud)
要么
.button:focused{
-fx-focus-color: transparent;
}
Run Code Online (Sandbox Code Playgroud)
Zol*_*ics 15
如果要在JavaFX 8中删除此焦点环,请使用modena.css中的.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;
}
Run Code Online (Sandbox Code Playgroud)
小智 10
要完全禁用此按钮,请选择:
button.setFocusTraversable(false);
Run Code Online (Sandbox Code Playgroud)
它比在 css 中编辑要干净得多。
Stelios Adamantidis的答案是正确的,也就是说
.button:focused {
-fx-background-insets: 0, 0, 1, 2;
}
Run Code Online (Sandbox Code Playgroud)
这是我的解释:
例如定义
-fx-background-color: red, green, deepskyblue, blue;
Run Code Online (Sandbox Code Playgroud)
似乎定义了四层背景颜色,红色作为最后层的颜色.
例如定义
-fx-background-radius: 0, 1, 4, 10;
Run Code Online (Sandbox Code Playgroud)
设置每个颜色图层的所有角的半径.这里,红色层具有半径为0的所有角,绿色层具有半径为1的所有角,依此类推.
例如定义
-fx-background-insets: -10, 0, 3, 5;
Run Code Online (Sandbox Code Playgroud)
设置颜色图层的填充.您还可以设置负值,然后颜色将围绕控件.
按钮的默认值似乎是这样的:
.button:focused {
-fx-background-color: <blueGlowingColor>, <?>, <?>, linear-gradient(to bottom, <?>, <?>);
-fx-background-insets: -1, 0, 1, 2;
}
Run Code Online (Sandbox Code Playgroud)
将insets的第一个值设置为0可隐藏第二个颜色后面的发光颜色.
有关JavaFX CSS的更多信息,请访问:http:
//docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html