将背景图像设置为与Java应用程序中的窗口/屏幕相同的大小

将背景图像设置为与Java应用程序中的窗口/屏幕相同的大小,java,css,image,background,javafx,Java,Css,Image,Background,Javafx,我想将背景图像设置为与窗口/屏幕相同的大小 我更愿意在我的CSS文件中这样做,但我还没有找到一种方法来实现这一点 我必须在javafx类文件中执行此操作吗 谢谢你的帮助;) 您必须在java代码中确定屏幕大小,如中所示,在CSS中无法确定 对于图像,在java代码中可以使用 ImageView imageView = new ImageView(image); imageView.setFitWidth(Screen.getPrimary().getVisualBounds().getWidth

我想将背景图像设置为与窗口/屏幕相同的大小

我更愿意在我的
CSS
文件中这样做,但我还没有找到一种方法来实现这一点

我必须在javafx类文件中执行此操作吗


谢谢你的帮助;)

您必须在java代码中确定屏幕大小,如中所示,在CSS中无法确定

对于图像,在java代码中可以使用

ImageView imageView = new ImageView(image);
imageView.setFitWidth(Screen.getPrimary().getVisualBounds().getWidth());
imageView.setFitHeight(Screen.getPrimary().getVisualBounds().getHeight());
如果要将背景图像设置为场景,则:

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.*;

public class ScreenSizeImage extends Application {
    @Override public void start(final Stage stage) {
        // uncomment if you want the stage full screen.
        //stage.setFullScreen(true);

        Screen screen = Screen.getPrimary();
        Rectangle2D bounds = screen.getVisualBounds();

        stage.setX(bounds.getMinX());
        stage.setY(bounds.getMinY());
        stage.setWidth(bounds.getWidth());
        stage.setHeight(bounds.getHeight());

        StackPane root = new StackPane();
        root.setStyle(
            "-fx-background-image: url(" +
                "'http://icons.iconarchive.com/icons/iconka/meow/256/cat-box-icon.png'" +
            "); " +
            "-fx-background-size: cover;"
        );
        stage.setScene(new Scene(root));
        stage.show();
    }

    public static void main(String[] args) { launch(args); }
}
当然,与内联setStyle调用不同,您最好使用单独的CSS样式表,如下所示:

.root{
    -fx-background-image: url("background_image.jpg");
    -fx-background-size: cover;
}
好问题

  • 首先,我想你的问题是指“应用程序窗口的大小”。显然,如果应用程序窗口较小,则背景图像不能大于屏幕

  • 其次,这里是《JavaFXCSS参考指南》中的一个片段:

    “…背景和边框机制是在CSS 3草稿背景和边框模块之后设计的。有关详细说明,请参见[4]。

    [4] CSS背景和边框模块第3级:


    • 您可以使用JavaFX特定于供应商的CSS属性
      -fx background size
      拉伸值,只要纵横比正确/尺寸成比例
      
    • 您还可以尝试将一个维度的
      auto
      与另一个维度的
      100%
      相结合,从而使其正常工作。。。和
      的一些组合包含
      。。。这取决于您是否可以接受裁剪后的图像

    • -fx背景尺寸
      [,]*

      =[|自动]{1,2}覆盖|包含|拉伸

      由逗号分隔的一系列值。系列中的每个bg大小项目应用于背景图像系列中的相应图像

    • 您可以在以下位置获得更多详细信息

   ...