css - 带有 FXML 的 JavaFX 更改 css 文件运行时,带有菜单项

标签 css javafx runtime menuitem fxml

我正在学习 JavaFx,我正在尝试在运行时更改窗口(Mastermind 游戏)的 css 样式。

目前它适用于一些对象,如按钮、背景、菜单栏、标签和形状。 但我想更改的另一个对象是菜单项(背景和标签)。

我尝试使用下一个 css 代码来访问它:

.context-menu {
    -fx-background-color: linear-gradient(rgba(200,200,200,1),rgba(50,50,50,1) 80%);
}

它在初始化时起作用,但在运行时更改时不起作用。 例如,它适用于菜单栏本身:

.menu-bar {
    -fx-background-color: black;
    -fx-selection-bar: #505050;
}
.menu-bar .label {
    -fx-font-size: 12pt;
    -fx-font-family: "Segoe UI Light";
    -fx-text-fill: white;
    -fx-opacity: 0.9;
}

在 FXMLcontroller 中,我调用以下代码来更改皮肤:

@FXML private AnchorPane generalPane;
private final String themeNormal = getClass().getResource("/mastermindStyles/MasterMind_Normal.css").toExternalForm();

@FXML
void handleSkinNormal(ActionEvent event){
   generalPane.getStylesheets().clear();
   generalPane.getStylesheets().add(themeNormal);
}

我该怎么做?

最佳答案

我找到了:

要使用预定义样式(如 Modena 和 Caspian):

Application.setUserAgentStylesheet(STYLESHEET_MODENA);

要使用您自己的 css 样式表:

Application.setUserAgentStylesheet(null);
StyleManager.getInstance().addUserAgentStylesheet(
  getClass().getResource("NewSkin.css").toExternalForm());

关于css - 带有 FXML 的 JavaFX 更改 css 文件运行时,带有菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167703/

相关文章:

css - HTML 类中的管道字符

javascript - 带进度条的 24 小时倒计时器

c# - 通用运行时?

c# - 将 IList 转换为 SomeType[]

java - 在运行时设置 JVM 堆大小

javascript - 尝试在我使用 Phaser 制作的游戏中宣布获胜者,但它不断重复警报

css - Chrome 浏览器上奇怪的对 Angular 线

JavaFX TableView 如何获取单元格的数据?

JAVAFX,倒计时不起作用

JAVAFX:带参数的OnAction事件