【发布时间】:2017-10-27 17:41:56
【问题描述】:
我看到这个问题问了很多,但我还没有看到一个非常普遍的方法。我正在使用 JavaFX 在 Java Eclipse Oxygen 中开发一个桌面应用程序,并且我有一个加载程序,我想在任何时候显示该加载程序,并且通过 http 加载图像。当用户点击不同的行时,必须通过 http 加载图像。因此,我将加载器放在图像顶部,然后使用; productPreviewLoader.setVisible(true) 显示或隐藏它。 fxml 中的 loader ImageView 在 GridPane 中是这样的。
<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 在 GridPane 行中水平居中 ImageView 时遇到问题。每当调整窗口大小时,GridPane 都会调整大小以匹配其父级的高度。我知道这是 2 个问题,但我可能最终会创建 2 个问题。
【问题讨论】: