我希望在聚焦时删除覆盖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
规范,而不是尝试将颜色变为透明吗?
答案 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;
}