JavaFX:将图像插入 GridPane

Posted

技术标签:

【中文标题】JavaFX:将图像插入 GridPane【英文标题】:JavaFX: Inserting image into a GridPane 【发布时间】:2016-08-07 17:45:18 【问题描述】:

基本上,我只想将图像插入到网格窗格中的单元格中。

GridPane gridpane = new GridPane();
gridpane.add(new Image("File:image/myfile.jpg"));
getChildren().addAll(gridpane);

总是告诉我“图像是抽象的,无法实例化”。我在谷歌上搜索了相当广泛的内容,发现我必须将其用作 BufferedImage 或其他东西?但实际上并没有得到它。我在这里做错了什么?

【问题讨论】:

【参考方案1】:

试试这个代码 ;)

image = new Image("File:image/myfile.jpg");
pic = new ImageView();
pic.setFitWidth(130);
pic.setFitHeight(130);
pic.setImage(image);
gridpane.add(pic);

Original Question

【讨论】:

【参考方案2】:

Image 是一个抽象类,因此无法实例化。您应该使用扩展 Image 的类之一,例如 BufferedImage

BufferedImage img = null;
try 
    img = ImageIO.read(new File("strawberry.jpg"));
 catch (IOException e) 

【讨论】:

这是一个 JavaFX 问题;如果 OP 询问 Swing/AWT 图像,这个答案将是合适的。【参考方案3】:

看来您对Image 的导入错误(您可能有java.awt.Image)。 JavaFX 图像所需的导入是

import javafx.scene.image.Image ;

然后您需要将图像包装在ImageView 中,并将ImageView 添加到网格窗格中:

GridPane gridpane = new GridPane();
Image image = new Image("File:image/myfile.jpg")
gridpane.getChildren().add(new ImageView(image));

【讨论】:

这让我更进一步(我确实有错误的导入),但现在它告诉我最后一行“没有合适的 add(ImageView) 方法”有错误。是否需要其他导入才能使 ImageView 正常工作? 对不起,我的错。更新了。 太棒了,解决了这个问题。它终于编译了。现在如何将其分配给某个行/列?我已经看到了:gridpane.getChildren().add(new ImageView(image),1,1);没用。 见docs SetRowIndex 和 SetColumnIndex 为我解决了问题。非常感谢。【参考方案4】:

你可以试试这个。

GridPane pane = new GridPane();
FileInputStream imageStream = new FileInputStream("us.gif");
Image image = new Image(imageStream);
pane.add(new ImageView(image), 0, 0);

【讨论】:

【参考方案5】:

使用这个:

ImageView imageView = new ImageView(new Image(getClass().getResourceAsStream("picture.jpg")));

【讨论】:

以上是关于JavaFX:将图像插入 GridPane的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaFX 的 GridPane 中删除“幽灵线”?

Javafx 中 GridPane 中的 HBox

如何使用 GridPane JavaFX 使按钮跨越多个列/行?

在GridPane JAVAFX中水平居中一行

JavaFX中GridPane的行居中对齐

JavaFX:GridPane 中的 ComboBox 导致不必要的大小调整