6

我想在 TableView 聚焦时删除它周围的蓝色边框。

在此处输入图像描述

我检查了 caspian.css,对于像 Button 和 TextField 这样的大多数组件,它执行以下操作:

.table-view:focused {
  -fx-background-color: -fx-focus-color,-fx-box-border,-fx-control-inner-background;
  -fx-background-insets: -1.4, 0, 1;
  -fx-background-radius: 1.4, 0, 0;
  /*....*/
  -fx-padding: 1; /* 0.083333em; */
}

最后,我的问题是关于 CSS 的。我可以pseudoclass在样式表中覆盖此规范,而不是尝试将颜色变为透明吗?

4

2 回答 2

9

是的你可以。在您的样式表中,使用您自己选择的 JavaFX CSS 属性定义完全相同的 CSS 选择器,如下所示:

.table-view:focused {
  -fx-background-color: red /* or transparent or other preferred color */,-fx-box-border,-fx-control-inner-background;
  -fx-background-insets: -1.4, 0, 1;
  -fx-background-radius: 1.4, 0, 0;
  /*....*/
  -fx-padding: 1; /* 0.083333em; */
}
于 2012-11-01T18:23:39.830 回答
3

因为 JavaFX 8 有一个新主题 'modena' 但有同样的老问题,我想更新 Uluk Biy 的答案并提供一些进一步的信息:

如果您想知道某些样式的来源,可以查看 modena.css。您可以在 jfxrt.jar 中找到这个 css 文件,该文件本身可以在您的 JRE 或 JDK 安装目录中找到。在 Ubuntu 14.04 上,jdk 主页通常位于

/usr/lib/jvm/java-8-oracle/

jfxrt.jar 应该在这里

/usr/lib/jvm/java-8-oracle/jre/lib/ext

打开 jar 文件并查看 /com/sun/javafx/scene/control/skin/modena 目录,您将在其中找到 modena.css

从第 406 行开始,您可以看到这样的标题

/* ====   BUTTON LIKE THINGS   ============================================== */

这部分下的css为很多控件和容器指定了背景和边框。你只需要搜索你的目标类。我将以按钮为例: 对于按钮类,指定了以下 css

-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
-fx-background-insets: 0 0 -1 0, 0, 1, 2;

由于某些原因,它们不使用边框,而是使用多个背景来模拟类似边框的外观。因此,如果您只想删除边框,则必须调整背景和插图属性。

最后,如果您想删除焦点效果,您必须覆盖此默认 css

.button:focused,
.toggle-button:focused,
.radio-button:focused > .radio,
.check-box:focused > .box,
.menu-button:focused,
.choice-box:focused,
.color-picker.split-button:focused > .color-picker-label,
.combo-box-base:focused,
.slider:focused .thumb {
    -fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color;
    -fx-background-insets: -0.2, 1, 2, -1.4, 2.6;
    -fx-background-radius: 3, 2, 1, 4, 1;
}

对于您选择的控件,使用上面的背景和插图的默认定义。例如按钮:

.button:focused {
    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
}
于 2016-05-20T16:16:04.767 回答