使用FXML/CSS更改JavaFX中Menu控件的文本颜色

XXL*_*XXL 5 css menu javafx-2 fxml

我想在JavaFX中更改Menu控件的文本颜色.目前,整个菜单栏的背景颜色设置为白色,显示菜单 -s 的默认文本颜色也是白色,所以我看不到实际控件,因此我想设置菜单的文本颜色("文件" ")黑色.我怎么做?

这是FXML部分:

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <MenuBar id="modBar" layoutX="176.0" layoutY="122.0" styleClass="modBar">
      <menus>
        <Menu id="modItem" mnemonicParsing="false" styleClass="modItem" text="File" />
      </menus>
      <stylesheets>
        <URL value="test.css" />
      </stylesheets>
    </MenuBar>
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

这是CSS部分:

.modBar
{
    -fx-background-color: white;
}
.modItem
{
    -fx-color: black;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用("文件"仍然是白色的).我究竟做错了什么?另外,我似乎无法将任何 CSS应用于.modItem - 它可以在Scene Builder中运行,但在预览后会消失(在SB中的所有菜单上也缺少"样式表"选择器).

XXL*_*XXL 15

好的,我想我找到了答案.我所做的是从jfxrt.jar(JavaFX使用的默认CSS主题)中提取caspian.css并检查与Menu -s 相关的所有内容:

.menu .label
{
    -fx-text-fill: black;
}
Run Code Online (Sandbox Code Playgroud)

这将影响所有 菜单控件.


顺便说一句,有一个特殊构建场景生成器可能出现的利益- B42,这有一个额外的CSS暴露内部风格控件/元素的菜单,所以定制变成了简单的操作(无需事先手工提取的适用的风格).