質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1145閲覧

バックグラウンドイメージが反映されない

salt111

総合スコア17

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2022/01/01 15:31

編集2022/01/02 02:47

scene Builderでバックグラウンドイメージを使っている時に、絶対パスだと上手くいきます。
ですが、相対パスだと何回やっても上手く行きません。
違う端末での動作を想定しているので、相対パスが理想的です。

絶対パス style=”-fx-background-image: url(file:c:/user/.../.../.../f.png)” //...の部分は省略しているだけでしっかりと入力しています。
相対パス style=”-fx-background-image: url(f.png)”

ファイルの関係は以下の通りです。
crs
|-ctrl
| |-Control.java
|
|-main
| |-Main.java
| |-Main.fxml
| |-f.png

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/01/01 22:51

ブラウザからのアクセスを想定しているなら、現在アクセスしているURLとの相対位置になっていないからではと。(この内容だけでは何も分からないですが)
m.ts10806

2022/01/01 22:56

もしくはコンパイル後のディレクトリから参照できない(コンパイル成果物にふくまれてない)ということも考えられなくもない
guest

回答1

0

ベストアンサー

こうですかね?
style="-fx-background-image: url(main/f.png);"

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.layout.BorderPane?> 4 5 6<BorderPane xmlns="http://javafx.com/javafx/11.0.1" 7 xmlns:fx="http://javafx.com/fxml/1" 8 style="-fx-background-image: url(main/f.png);" 9 fx:controller="ctrl.Control"/>

プロジェクト

Correct way to set the path of a BackgroundImage in JavaFX CSS - Stack Overflow


追記 全文

Java

1package main; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Parent; 6import javafx.scene.Scene; 7import javafx.stage.Stage; 8 9public class Main extends Application { 10 public static void main(String[] args) { launch(args); } 11 12 @Override public void start(Stage primaryStage) throws Exception { 13 Parent root = FXMLLoader.load(getClass().getResource("Main.fxml")); 14 primaryStage.setTitle("Hello World"); 15 primaryStage.setScene(new Scene(root, 300, 275)); 16 primaryStage.show(); 17 } 18}

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.layout.BorderPane?> 4 5 6<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" 7 prefHeight="400.0" prefWidth="600.0" 8 style="-fx-background-image: url(main/f.png);" 9 xmlns="http://javafx.com/javafx/11.0.1" 10 xmlns:fx="http://javafx.com/fxml/1" 11 fx:controller="ctrl.Control"/>

Java

1package ctrl; 2 3public class Control {}

確認画像

投稿2022/01/02 07:33

編集2022/01/03 05:38
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

salt111

2022/01/03 04:50

試してみたんですけど反映されませんでした、、、
TN8001

2022/01/03 05:40

> 試してみたんですけど反映されませんでした、、、 うーん何が違うんですかね? こちらの手元では出るんですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問