聚焦表视图时,从第一行停用蓝色边框

Sam*_*ami 3 css javafx

当表格视图聚焦时,我想在 javafx 中停用显示蓝色边框的第一行(见图)。我在我的 css 中尝试了很多东西都没有成功。我也没有在论坛中找到有用的贡献。

提前谢谢

在此处输入图片说明

Jam*_*s_D 6

以下对我有用:

.table-view:focused .table-row-cell:focused {
    -fx-background-color: -fx-table-cell-border-color, -fx-background;
    -fx-background-insets: 0, 0 0 1 0;
}
Run Code Online (Sandbox Code Playgroud)

解释:

默认样式表有重点,非选择-行下面的CSS规则:

/* focused cell (keyboard navigation) */
.table-view:focused:row-selection > .virtual-flow > .clipped-container > .sheet > .table-row-cell:focused {
    -fx-background-color: -fx-background, -fx-cell-focus-inner-border, -fx-background;
    -fx-background-insets: 0, 1, 2;
}
Run Code Online (Sandbox Code Playgroud)

这是通过绘制具有三个不同插图的三个背景(一种称为“嵌套背景”的技术)来实现的。第一个的插图为 0(填充整行)并且使用默认背景颜色 ( -fx-background)。第二个的插图为 1(所以前一个背景的一个像素是可见的);它用查找的颜色填充一个矩形-fx-cell-focus-inner-border。第三个有 2 个插入(因此它使中间背景的一个像素可见)并且再次具有默认颜色。

默认行背景由

.table-row-cell {
    -fx-background: -fx-control-inner-background;
    -fx-background-color: -fx-table-cell-border-color, -fx-background;
    -fx-background-insets: 0, 0 0 1 0;
    -fx-padding: 0;
    -fx-text-fill: -fx-text-background-color;
}
Run Code Online (Sandbox Code Playgroud)

这再次使用“嵌套背景”,第一个具有零插图和背景颜色-fx-table-cell-border-color,第二个具有默认背景和仅沿底部边缘的一个像素的插图。所以这里的效果是一个 1 像素宽的底部边框。

我上面使用的 CSS 只是将焦点行重新定义为非焦点行。