如何移除JavaFX中TableColumn拖动排序时的蓝色边框?
JavaFX TableView拖动列排序时蓝色边框的解决办法
那个蓝色边框是列头的焦点高亮样式,默认由JavaFX的-fx-focus-color和-fx-faint-focus-color属性控制。你之前的方案没生效,是因为没有精准覆盖到所有触发焦点的节点,以下是可行的解决方法:
一、完全隐藏蓝色边框
将以下CSS添加到你的样式文件中:
/* 覆盖列头及内部元素的焦点样式 */ .table-view .column-header:focused, .table-view .column-header-background .filler:focused, .table-view .column-header .label:focused { -fx-focus-color: transparent; -fx-faint-focus-color: transparent; -fx-border-color: transparent; } /* 处理列头背景容器的焦点样式 */ .table-view .column-header-background:focused { -fx-focus-color: transparent; -fx-faint-focus-color: transparent; }
二、修改边框颜色
如果不想隐藏,而是要换成自定义颜色,把transparent替换为你需要的颜色值即可,比如改成红色:
/* 修改列头焦点边框为红色 */ .table-view .column-header:focused, .table-view .column-header-background .filler:focused, .table-view .column-header .label:focused { -fx-focus-color: #ff0000; -fx-faint-focus-color: rgba(255, 0, 0, 0.2); } .table-view .column-header-background:focused { -fx-focus-color: #ff0000; -fx-faint-focus-color: rgba(255, 0, 0, 0.2); }
说明
拖动列排序时,焦点会同时落在column-header、column-header-background以及列头内部的label节点上,必须同时覆盖这些节点的:focused伪类样式,才能彻底替换或隐藏默认的蓝色边框。
内容的提问来源于stack exchange,提问作者The Ciosiek
相关产品推荐
相关产品推荐

