从JavaFX中删除所有焦点边框

时间:2016-05-30 11:24:17

标签: css javafx focus border

在使用JavaFX时,我发现焦点边框会阻碍某些视觉节点,如按钮和某些窗格。关于这个主题的其他问题通常建议将以下css(覆盖Modena.css的默认值,JavaFX 8的默认样式表)添加到样式文件中:

-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;

乍一看,这会移除焦点边框,但经过一些使用后,我发现有些UI元素缺少的不仅仅是那个蓝色光晕。经过摩德纳之后,我发现这是因为绘制了很多节点的方式:它们中的许多都有一个背景颜色,由多个盒子组成,彼此叠加,具有不同的插入和半径,从而形成边界 - 喜欢看。

我还发现这种背景颜色来自前面提到的绘制边框的属性。因此,将颜色设置为透明具有意想不到的效果,即某些节点(如窗格,组合框,......)在未聚焦时显示边框,但在聚焦时不再显示边框,这是由于为{导出背景颜色的方式{1}}伪类。

是否可以移除焦点边框(以及模糊的焦点边框),以便它们在实际聚焦时保留未聚焦元素的外观?

1 个答案:

答案 0 :(得分:4)

我已经编译了一个解决方案,通过覆盖我在SO上发现的内容,通过覆盖更多部分的模型来删除焦点边框:我已经选择覆盖“:focused”伪类的属性。类似按钮和类似窗格的事物的非聚焦默认值(如Modena本身所述)。结果是:

:focused

基本上它的作用是改变背景颜色的渲染,以绘制相同的外观,感觉UI节点是否具有焦点。