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

时间:2012-06-15 13:50:30

标签: 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>

这是 CSS 部分:

.modBar
{
    -fx-background-color: white;
}
.modItem
{
    -fx-color: black;
}

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

2 个答案:

答案 0 :(得分:14)

好的,我想我找到了答案。我所做的是从 jfxrt.jar 中提取 caspian.css (默认 CSS 主题 JavaFX 使用)和检查与菜单 -s:

相关的所有内容
.menu .label
{
    -fx-text-fill: black;
}

这将影响所有 菜单控件。


顺便说一下, B15 b12 还有一个构建的特定构建,这还有一个 CSS 菜单暴露了控件/元素的内部样式,因此自定义变成了简单的操作(无需事先手动提取应用的样式)。

答案 1 :(得分:0)

我不确定,但你设置了id属性 - 这并不意味着你只能通过它来访问它们     #modBar 要么     #modItem ???

我对JFX2也是一个新手(大约一个月),并且在我作为Java开发人员的这些年里不幸地从未需要使用css,所以它只是一个假设。