JavaFX:将图像插入 GridPane

JavaFX: Inserting image into a GridPane

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

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

总是告诉我"Image is abstract, cannot be instantiated"。我用谷歌搜索了相当广泛的内容,模糊地发现我必须将其用作 BufferedImage 或其他东西?虽然没有真正得到它。我在这里做错了什么?

试试这个代码 ;)

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

Original Question

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

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

看来您对 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));

你可以试试这个。

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

使用这个:

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