因为 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;
}