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

时间:2014-05-07 10:24:11

标签: java css image background javafx

我想设置一个与我的窗口/屏幕大小相同的背景图像。

我会首选在我的CSS文件中执行此操作,但我有 NOT FOUND 这样做的方法。

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

感谢您的帮助;)

2 个答案:

答案 0 :(得分:12)

您需要确定JavaFX window sizing中所示的<强>> 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;
}

答案 1 :(得分:7)

好问题......

  • 首先,我认为你的意思是&#34;应用程序窗口的大小&#34;在你的问题。显然,如果您的应用窗口较小,则无法获得比屏幕大的背景图片。

  • 其次,这是 JavaFX CSS参考指南中的一个片段:

    http://download.java.net/jdk9/jfxdocs/javafx/scene/doc-files/cssref.html

      
        

    &#34; ...在CSS 3草稿背景和边框模块之后,背景和边框机制被图案化。有关详细说明,请参阅[4]。 &#34;

             
       ...
    
        
             

    [4] CSS背景和边框模块第3级: http://www.w3.org/TR/css3-background/

      
     
    • 只要您的宽高比正确/您的尺寸,您就可以将JavaFX 供应商特定的 CSS属性-fx-background-size stretch 值一起使用是成比例的。
    • 您也可以通过尝试将auto用于一个维度并100%用于另一个维度以及contain的某些组合...取决于它如果您可以使用裁剪图像

    •   

      -fx-background-size <bg-size> [ , <bg-size> ]*

           
          

      <bg-size> = [ <size> | auto ]{1,2} | cover | contain | stretch

               

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

        
    • 您可以在http://www.w3.org/TR/css3-background/#the-background-image

    • 获取更多详情