javafx-替换BorderPane

时间:2016-12-16 16:04:34

标签: java javafx imageview background-image borderpane

BorderPane上有一个Scene。&我在该窗格中有一个背景图片。 我对该图片的代码:

BorderPane B_pane = new BorderPane();
Image image = new Image("/Client/social3.png",width,height,false,true,true);
ImageView imageView = new ImageView(image);
B_pane.getChildren().add(imageView);

后来我在该窗格中添加了一些VBox作为左,右部分。我想要更改BorderPane的背景图像(显然不会导致VBox的位置,元素发生任何变化)特别Button点击。我该怎么做?

1 个答案:

答案 0 :(得分:3)

只是真正使用背景图片而不是添加ImageView作为孩子:

@Override
public void start(Stage primaryStage) {
    BorderPane borderPane = new BorderPane();
    Image image1 = new Image("https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/se/se-logo.png?v=dd7153fcc7fa");
    Image image2 = new Image("https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a");

    BackgroundSize bSize = new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, true, false);

    Background background2 = new Background(new BackgroundImage(image2,
            BackgroundRepeat.NO_REPEAT,
            BackgroundRepeat.NO_REPEAT,
            BackgroundPosition.CENTER,
            bSize));

    borderPane.setBackground(new Background(new BackgroundImage(image1,
            BackgroundRepeat.NO_REPEAT,
            BackgroundRepeat.NO_REPEAT,
            BackgroundPosition.CENTER,
            bSize)));

    Button btn = new Button("Change Background");
    btn.setOnAction((ActionEvent event) -> {
        borderPane.setBackground(background2);
    });

    borderPane.setCenter(btn);

    Scene scene = new Scene(borderPane, 600, 400);

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