2

主类.java:

public class mainClass extends Application{
    Scene scene;
    Group group;
    @Override
    public void start(Stage stg) throws Exception{
        stg.setTitle("Hi");
        stg.setWidth(600); stg.setHeight(250);
        group = new Group();
        scene = new Scene(group, 600, 250);
           scene.getStylesheets().add("mainClass.css");
        stg.setScene(scene);
        stg.centerOnScreen();
        stg.show();
    }

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

主类.css

.mainClass-scene{
    -fx-background-image: url("background.jpeg");
    -fx-background-repeat: stretch;   
    -fx-background-size: 600 250;
    -fx-background-position: center center;
    -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); 
}

应用程序正常工作我显示我的框架但我无法在场景中看到背景图像。也许 css 无法正常工作我如何解决这个问题?

对不起我的英语不好谢谢。

4

1 回答 1

5

你的程序有很多问题。

  1. 您定义了一个样式类mainClass-scene,但从不使用它。
  2. -fx-background-image您使用仅适用于Regions的 css属性,但您没有任何区域。
  3. 您应用投影效果,但不要在背景图像周围留下任何插图,以便看到投影。
  4. 您将舞台大小设置为与场景大小相同的值,但舞台上有装饰,如标题栏等,因此大小不能相同。
  5. 通常最好将 css 文件作为类资源检索。

毒

这是适用于我的更新版本并生成上面的图像。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MainClass extends Application{
  @Override public void start(Stage stage) throws Exception{
    stage.setTitle("Hi");

    StackPane layout = new StackPane();
    layout.getStylesheets().add("mainClass.css");
    layout.getStyleClass().add("main-class");

    Scene scene = new Scene(layout, 600, 250);
    scene.getStylesheets().add(
      getClass().getResource("mainClass.css").toExternalForm()
    );
    stage.setScene(scene);
    stage.setResizable(false);
    stage.centerOnScreen();
    stage.show();
  }

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

相关的CSS:

/**
 * file: mainClass.css
 *   Place in same directory as MainClass.java.
 *   Have your build system copy this file to your build output directory.
 **/

.main-class {
  -fx-background-image: url('http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/256/Poison-blue-icon.png');
  -fx-background-repeat: stretch;   
  -fx-background-size: 570 220;
  -fx-background-position: center center;
  -fx-effect: dropshadow(three-pass-box, black, 30, 0.5, 0, 0); 
  -fx-background-insets: 30;
}
于 2013-04-25T22:09:16.700 回答