2012-03-24 7 views
6

で背景画像を設定する私はこのコードを使用して背景として画像を設定しようとしている:JavaFXのコード(ないCSS)

root.setStyle("-fx-background-image: url('splash.jpg'); 
       -fx-background-position: center center; 
       -fx-background-repeat: stretch;"); 

しかし、それは動作しません。私はCSSでそれを設定した場合、それは完璧に動作します:

root.setId("pane"); 
primaryStage.getScene().getStylesheets().add(JavaFXApplication9.class.getResource("style.css").toExternalForm()); 

とCSS:

#pane{ 
    -fx-background-image: url('splash.jpg'); 
    -fx-background-repeat: stretch; 
    -fx-background-position: center center; 
} 

私のすべてのファイル(メインクラス、CSSおよび画像)同じパッケージに入れました。

コードを使用して背景画像を設定するにはどうすればよいですか?あるいは、CSSのいくつかの要素の背景イメージに関する行をアプリケーションコードからオーバーライド(置き換え)する方法はありますか?ありがとう!

答えて

12

は、次の試してみてください。

String image = JavaFXApplication9.class.getResource("splash.jpg").toExternalForm(); 
root.setStyle("-fx-background-image: url('" + image + "'); " + 
      "-fx-background-position: center center; " + 
      "-fx-background-repeat: stretch;"); 
+2

ありがとうございます!) – Gleb

9

あなたが本当にCSSやsetStyle()メソッドを使用したくない場合は、次のように使用することができます。

// new Image(url) 
Image image = new Image(CurrentClass.class.getResource("/path/to/package/bg.jpg")); 
// new BackgroundSize(width, height, widthAsPercentage, heightAsPercentage, contain, cover) 
BackgroundSize backgroundSize = new BackgroundSize(100, 100, true, true, true, false); 
// new BackgroundImage(image, repeatX, repeatY, position, size) 
BackgroundImage backgroundImage = new BackgroundImage(image, BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, backgroundSize); 
// new Background(images...) 
Background background = new Background(backgroundImage); 

あなたはBackgroundImagehereに詳細なドキュメントを見つけることができます。

(この古い質問に返信して申し訳ありません)

関連する問題