【问题标题】:How to set image to a scene background in JavaFX?如何在 JavaFX 中将图像设置为场景背景?
【发布时间】:2016-10-03 19:35:27
【问题描述】:

标题说明了一切,我猜。

如何将.jpg(或任何其他支持的图像格式)图像设置为场景背景?

有点通过使用HBoxImageImageView 实现了这一点,如下所示:

String url = ...
HBox box= new HBox();
Image x = new Image(url);
ImageView iv = new ImageView(x);
box.getChildren().add(iv);
box.setVisible(true);

然后我先将该框添加到场景中,然后再添加其他所有内容。

我不是在抱怨那段代码——它适用于我的目的——但是有没有合适的方法来设置背景?

【问题讨论】:

    标签: javafx


    【解决方案1】:

    ImagePattern 可以用作fillfill

    ImagePattern pattern = new ImagePattern(myImage);
    scene.setFill(pattern);
    

    【讨论】:

    • 我正在使用这种方法,但没有任何反应?
    【解决方案2】:

    只需在场景的根节点上调用setBackground。例如:

    Pane root = ... ; // probably some pane subclass...
    String url = ... ;
    Image img = new Image(url);
    BackgroundImage bgImg = new BackgroundImage(img, 
        BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT,
        BackgroundPosition.DEFAULT, 
        new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, true, false));
    
    // put stuff in root as normal....
    
    Scene scene = new Scene(root);
    

    BackgroundImage 构造函数等的参数见Javadocs

    【讨论】:

    • 问题是,我的根是Group,而不是窗格子类。它的父类不是Region(很有趣,它是Parent)。因此它没有setBackground 方法。那这个没办法了?根节点必须是Region的子类?
    • 你不能把它改成Pane吗?如果 GroupPane 是场景的根,它们的行为会不会相同...?
    • 另外请注意,如果您选择使用窗格而不是组作为场景根目录,则该窗格的 styling of the background 可以从您的代码外部化为 CSS 样式表(如果你愿意)。
    猜你喜欢
    • 2012-04-02
    • 2019-09-02
    • 2020-05-05
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多