如何删除JavaFX按钮的默认边框发光(选中时)?

Tit*_*tus 47 javafx

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

选择按钮时,蓝色边框是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的博客链接有一些烦人的弹出窗口.

  • 感谢您引用`-fx-faint-focus-color` (8认同)

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)

  • 这需要更高.这里的所有其他解决方案都不适用于JavaFX 8. (2认同)
  • 这个似乎最接近,但聚焦按钮上的角有不同的半径. (2认同)

小智 10

要完全禁用此按钮,请选择:

button.setFocusTraversable(false);
Run Code Online (Sandbox Code Playgroud)

它比在 css 中编辑要干净得多。


use*_*691 8

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