首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MenuBar改变场景的背景色(Java 8)

MenuBar改变场景的背景色(Java 8)
EN

Stack Overflow用户
提问于 2014-12-06 21:47:36
回答 1查看 2.3K关注 0票数 1

为什么MenuBar在这个代码示例中改变场景的背景色?它应该是蓝色的,但它是白色的。

代码语言:javascript
复制
package application;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root,400,400);
            scene.setFill(Color.rgb(0, 0, 255));

            primaryStage.setScene(scene);
            primaryStage.show();

            MenuBar menuBar = new MenuBar();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-07 02:17:29

您看到的白色背景是BorderPane的背景。在加载默认样式表时设置此背景色。

只在创建MenuBar时才会看到CSS的原因是,只有在创建第一个控件时才应用CSS(除非强制)。这是设计上的,以防止加载样式表和将CSS应用于不需要它们的应用程序(例如,管理自己所有图形的游戏或模拟)的开销。由于所有控件都采用CSS样式,因此只需实例化要应用的CSS控件。

修复方法是使BorderPane的背景透明。

任一

代码语言:javascript
复制
root.setStyle("-fx-background-color: transparent;");

代码语言:javascript
复制
root.setBackground(Background.EMPTY);

当然,由于必须设置根窗格的背景,所以最好将其设置为蓝色,而不是设置Scene的填充。

代码语言:javascript
复制
        BorderPane root = new BorderPane();
        root.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, Insets.EMPTY)));
        Scene scene = new Scene(root,400,400);

或者,您可以使用外部样式表:

代码语言:javascript
复制
.root {
    -fx-background-color: blue ;
}

还请参阅这个相关员额这个OTN的讨论

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27336944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档