JavaFX菜单字体修改求助:无法更改菜单文字颜色
直接给Menu设置-fx-text-fill或调用setTextFill()无效,是因为Menu的文本由内部嵌套的Label节点渲染,默认样式优先级更高,覆盖了你的设置。以下是几种可行的解决方式:
方法一:通过内联CSS定位内部Label
在setStyle中使用嵌套选择器,直接针对Menu内部的Label设置样式:
Menu menu = new Menu("Menu"); menu.getItems().addAll(rulesItem, oddsItem, exitItem); // 用.menu .label选择器定位内部文本标签 menu.setStyle("-fx-font-size: 18; .menu .label {-fx-text-fill: white;}");
方法二:自定义Menu的Graphic组件
直接创建一个Label并设置样式,将其作为Menu的显示内容:
// 创建自定义Label并设置样式 Label menuLabel = new Label("Menu"); menuLabel.setStyle("-fx-font-size: 18; -fx-text-fill: white;"); // 初始化Menu时不传入文本,改用自定义Label作为graphic Menu menu = new Menu(); menu.setGraphic(menuLabel); menu.getItems().addAll(rulesItem, oddsItem, exitItem);
方法三:使用全局CSS文件(适合多Menu场景)
如果需要统一设置所有Menu的样式,创建一个CSS文件(比如menu-styles.css):
.menu .label { -fx-text-fill: white; -fx-font-size: 18px; }
然后将CSS文件加载到你的Scene中:
Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("menu-styles.css").toExternalForm());
内容的提问来源于stack exchange,提问作者Mysterio
相关产品推荐
相关产品推荐

