ステートメント 1 は CSS から画像ファイルを取得し、絶対 URL を指定しても画像ファイルを見つけることができません。なんで?
ステートメント 3 で動作するため、イメージ ファイルの場所は正しいです。これは、jewelsea によって投稿されたソリューションのさらなるクエリです。
import javafx.scene.image.Image;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextFieldCssSample extends Application {
@Override
public void start(Stage stage) {
TextField textField = new TextField();
textField.setId("textField");
StackPane layout = new StackPane();
layout.getChildren().addAll(textField);
// 1) following statement **fails**. resources folder is below the root level folder
textField.setStyle("-fx-border-color: red; -fx-background-image:url('/resources/pumpkin-icon.png'); -fx-background-repeat: no-repeat; -fx-background-position: right center;");
// 2) following statement succeeds in finding a http url.
// textField.setStyle("-fx-border-color: red; -fx-background-image:url('http://icons.iconarchive.com/icons/rockettheme/halloween/32/pumpkin-icon.png'); -fx-background-repeat: no-repeat; -fx-background-position: right center;");
// 3) following statement succeeds finding image file.
stage.getIcons().add(new Image("/resources/pumpkin-icon.png"));
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
更新: cnahr の回避策が機能しました! また、JavaFX バグ レポートを開きました。RT-31131