FXMLでImageView
を使用して画像をロードする際に問題が発生しました。
私のコントローラークラス:
public class BoxViewController {
@FXML
private Label label_boxID;
@FXML
private ImageView boximage;
public void initData(ObservableList<BoxProperty> observableList,
BoxService sBox,
TableView tableview) {
this.label_boxID.setText(
String.valueOf(this.boxproperty.getPboxid()));
Image image = new Image("boximage.jpg");
this.boximage = new ImageView();
this.boximage.setImage(image);
}
}
そのため、テキストでラベルを設定することはできますが、画像がImageViewに表示されません。 ImageViewの場合、FXMLファイルにIDを追加しました。
<ImageView fx:id="boximage"
disable="false"
fitHeight="150.0" fitWidth="200.0"
layoutX="69.0" layoutY="322.0"
pickOnBounds="true"
preserveRatio="true" />
ラベルが機能するためにこれが機能しない理由がわかりませんが、画像が読み込まれません。boximage
がnullでないかどうかも確認しましたが、そうではありません。例外もありません。
これは機能します:
BufferedImage bufferedImage;
bufferedImage = ImageIO.read(new File(this.path));
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
this.boximage.setImage(image);
多分それはソース画像の場所の問題です。 このウェブサイト のコメントによると、 "Maxim"からnew Image("boximage.jpg");
を使用する場合、ルートディレクトリはメインプロジェクトフォルダであり、たとえばscene.getStylesheets().add("login.css");
の場合、ルートフォルダはsrc
です。多分あなたはこれを試すことができます:
_Image img = new Image("file:boximage.jpg");
ImageView imageView = new ImageView(img);
_
このコードのメインプロジェクトフォルダーにソースイメージを移動してみてください
テストの目的で、[〜#〜] fxml [〜#〜]からその画像をロードしてみてください:
_<ImageView id="boxImage" ...>
<image>
<Image url="@boximage.jpg" />
</image>
</ImageView>
_