在使用JavaFX时,我发现焦点边框会阻碍某些视觉节点,如按钮和某些窗格 . 关于这个主题的其他问题通常建议在样式文件中添加以下css(覆盖Modena.css的默认值,JavaFX 8的默认样式表):
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
乍一看,这会移除焦点边框,但经过一些使用后,我发现一些UI元素缺少的不仅仅是蓝色光晕 . 经过摩德纳之后,我发现这是因为绘制了很多节点的方式:它们中的许多都有一个背景颜色,由多个盒子组成,彼此叠加,具有不同的插入和半径,从而形成边界 - 喜欢看 .
我还发现这种背景颜色来自前面提到的绘制边框的属性 . 因此将颜色设置为透明具有意想不到的效果,即某些节点(如窗格,组合框,...)在未聚焦时显示边框,但在聚焦时不再显示,因为背景颜色的衍生方式为 :focused
伪类 .
是否可以移除焦点边框(和模糊的焦点边框),以便它们在实际聚焦时保留未聚焦元素的外观?
1 回答
我已经编译了一个解决方案,其中通过覆盖更多部分的模型来组合我在SO上找到的焦点边框:我已经选择覆盖非焦点的那些“:focused”伪类的属性类似于按钮和窗格的东西的默认值(如在modena中所述) . 结果是:
基本上它是什么改变了背景颜色的渲染,以绘制相同的外观和感觉UI节点是否具有焦点 .