JavaFX ComboBox CSS样式

时间:2016-07-18 13:15:37

标签: java css javafx combobox

我正在使用JavaFX + FXML构建一个小应用程序,并且我试图实现一些简单的CSS以获得特定的样式。

我对Combobox元素有疑问。实际上,默认情况下它的颜色是灰色的:

enter image description here

我希望将其设置为白色(或透明),并保留边框,以匹配与文本字段相同的样式。所以我尝试将背景颜色设置为透明但有副作用:边框也变得透明!

enter image description here

这是我添加的CSS:

.root {
    -fx-font-size: 11pt;
    -fx-font-family: "Verdana";
    -fx-background: #FFFFFF;
}

.normal-label {
    -fx-text-fill: #005EB8;
}

.normal-text-field {
    -fx-text-fill: #333333;
}

.combo-box {
    -fx-background-color: transparent;
}

我根本不熟悉CSS写作,所以也许我完全错过了一些东西。是不是组合框没有定义边界?所以我必须覆盖边框并找出文本字段的边框是什么?

2 个答案:

答案 0 :(得分:5)

来自inherits its CSS style

ComboBox ComboBoxBase

  

ComboBox控件具有所有属性和伪类   ComboBoxBase。

ComboBoxBase的默认CSS样式类定义为:

.combo-box-base {
    -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;
    -fx-background-radius: 3px, 3px, 2px, 1px;
    -fx-padding: 0.333333em 0.666667em 0.333333em 0.666667em; /* 4 8 4 8 */
    -fx-text-fill: -fx-text-base-color;
    -fx-alignment: CENTER;
    -fx-content-display: LEFT;
}

您可以覆盖此样式类,如:

.combo-box-base {
    -fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, white;
    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
    -fx-background-radius: 3px, 3px, 2px, 1px;
}

这个样式类只是将内部部分设置为白色,边框实际上是不变的(删除最后两个属性然后你将得到一个纯白色的无边框ComboBox)。

注意:

如果仅使用.combo-box-base,则覆盖.combo-boxComboBox样式类是等效的。

使用.combo-box-base样式类而不是另一个样式类的答案中的原因是还有其他控件继承了.combo-box-base样式类,例如ColorPicker和{ {3}}。覆盖.combo-box-base会使所有这些控件共享相同的样式,从而产生更加统一的设计。

答案 1 :(得分:-1)

您可以添加以下属性来控制边框:

L6
相关问题