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

标签 css menu javafx-2 fxml

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

这是 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;
}

这不起作用("file"仍然是白色)。我究竟做错了什么?另外,另一件事是我似乎无法将 任何东西 与 CSS 一起应用于 .modItem - 它在 Scene Builder 中有点工作,但消失了一旦预览(SB 中的所有菜单-s 也缺少“样式表”选择器)。

最佳答案

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

.menu .label
{
    -fx-text-fill: black;
}

这将影响所有菜单控件。


顺便说一句,Scene Builder 的一个特殊build 可能会引起人们的兴趣 - b42,它有一个额外的CSS 菜单公开了控件/元素的内部样式,因此自定义变成了一个简单的操作(无需事先手动提取所应用的样式)。

关于css - 使用 FXML/CSS 更改 JavaFX 中 Menu 控件的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051936/

相关文章:

jquery - HTML DIV 无法正确显示

java - 从自定义 DialogBox 类检索输入

html - 具有尺寸的固定和居中的 div

html - 阻止 float DIV 重叠

css - CSS Grid Layout 与其他布局系统有什么区别?

asp.net - 减少 ASP.NET 菜单控件大小(无需第 3 方库)

ASP.NET MVC下的JQuery菜单插件似乎只能在Chrome中工作,但不能在IE和FireFox中工作

android - 更改背景颜色单项菜单

css - 如何设置菜单按钮和菜单项的样式

java - 为什么我的 JavaFX TableView 是空的