javafx-2,通过CSS删除焦点突出显示

时间:2012-11-01 17:58:25

标签: css javafx-2

我希望在聚焦时删除覆盖TableView的蓝色边框。

enter image description here

我检查了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规范,而不是尝试将颜色变为透明吗?

2 个答案:

答案 0 :(得分: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; */
}

答案 1 :(得分:2)

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

如果您想知道某些风格来自哪里,您可以查看一下modena.css。您可以在jfxrt.jar中找到此css文件,该文件本身可以在JRE或JDK安装目录中找到。在Ubuntu 14.04上,jdk home通常位于

之下
/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;
}