この質問はたくさん尋ねられますが、私はそれを行う非常に一般的な方法を見ていません。私はJavaFXを使ってJava Eclipse Oxygenのデスクトップアプリケーションを開発しています。いつでも表示したいローダーと、http経由でイメージをロードしています。ユーザーが別の行をクリックすると、イメージがhttp経由で読み込まれる必要があります。だから私はイメージの上に私のローダーを持って、私はちょうど使用します。 productPreviewLoader.setVisible(true)
を表示または非表示にします。 fxml内のローダーImageViewは、GridPaneで次のようになります。ImageViewでJavaFXのgifイメージを再生する
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" valignment="TOP" vgrow="ALWAYS" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
</rowConstraints>
<children>
<ImageView fx:id="productPreview" fitHeight="282.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" />
<!-- This is the loader-->
<ImageView fx:id="productPreviewLoader" fitHeight="112.0" fitWidth="136.0" pickOnBounds="true" preserveRatio="true" />
<TextFlow fx:id="productPreviewTextFlow" GridPane.rowIndex="1">
<GridPane.margin>
<Insets right="10.0" />
</GridPane.margin>
<padding>
<Insets bottom="30.0" left="10.0" right="10.0" top="30.0" />
</padding></TextFlow>
ローダーイメージを設定するコードは次のようになります。
//Set up the product preview image loader
BufferedImage bufferedImage;
File file = new File("resources\\images\\loaders\\img-loader-icon.gif");
try {
bufferedImage = ImageIO.read(file);
productPreviewLoader.setImage(SwingFXUtils.toFXImage(bufferedImage, null));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
productPreviewLoader.setVisible(false);
画像がImageViewで再生されません。それができない場合は、私にそれを行う別の方法を教えてください。また、ImageViewをImageViewをGridPane行の中央に配置するのに問題があります。 GridPaneは、ウィンドウのサイズが変更されるたびに、親の高さに合わせてサイズが変更されます。私はこれが2つの質問であることを知っていますが、おそらく2つの質問を作成することになりました。
このコードを見ると、再生するgitアニメーションが設定されている場所はありません。画像をロードするためのボタンが追加されている点を除きます。私は画像をロードするのに問題はない。イメージはImageViewに追加されたときには再生されません。最初のフレームにとどまります。 – LogicDev
「遊び」とまったく同じ意味ですか?上記のコードを使用して "URL Load"ボタンをクリックすると、gif Imageが表示されます。 externalLoadButtonは、gif ImageをURL経由でImageViewにロードします。多分私はあなたの目標をここで理解していない...私が間違っている場合は私を訂正してください。 – JKostikiadis
gifイメージにアニメーションが含まれています。私のコードで、 'productPreviewLoader.setImage(SwingFXUtils.toFXImage(bufferedImage、null));'を使用すると、画像はまだアニメーションなしのままです。 – LogicDev