Javafx在TableView中添加Image [英] Javafx adding Image in TableView

查看:314
本文介绍了Javafx在TableView中添加Image的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 tableView 中添加图片,但我无法添加图片。

I am trying to add image in tableView but I can't add image.

我正在获取图像在 byte [] 中,我可以在 imageView 中设置此图像,但有没有办法在<$中添加它c $ c> tableView ?

I am getting image in byte[] and I can set this image in imageView but is there any way to add it in tableView?

person3 class:

public class person3 {
    private final StringProperty firstName7 = new SimpleStringProperty("");
    private final StringProperty firstName8 = new SimpleStringProperty("");

    public person3(String firstName4, String firstName5) {
        setFirstName7(firstName4);
        setFirstName8(firstName5);
    }

    public String getFirstName7() {
        return firstName7.get();
    }

    public void setFirstName7(String name) {
        this.firstName7.set(name);
    }

    public StringProperty firstNameProperty7() {
        return firstName7;
    }

    public String getFirstName8() {
        return firstName8.get();
    }

    public void setFirstName8(String name) {
        this.firstName8.set(name);
    }

    public StringProperty firstNameProperty8() {
        return firstName8;
    } 
}

现在我想在<$ c中添加图片$ c> tableview :

f51 = rs.getBytes(10); 
System.out.println(f51);
ByteArrayInputStream bis = new ByteArrayInputStream(f51);
System.out.println(bis);
BufferedImage read = ImageIO.read(bis);
System.out.println(read);
Image image = SwingFXUtils.toFXImage(read, null);
table1.getItems().add(new person3("Data1", "data2"));
// this add simple data but how can I add image

想得到任何咨询。谢谢。

Would like to get any advice. Thank you.

推荐答案

这个问题的一个有效方法是创建简单的类,让我们说 CustomImage 私有 ImageView 对象初始化及其setter和getter。接下来,您可以使用此类指定 TableView< T> TableColumn< T> 泛型类型,设置列的单元格值工厂,并使用您的图像填充表格。示例 CustomImage 类的实现及其实际用途如下所示:

One of the posible approach for this issue is to create simple class, lets say CustomImage with private ImageView object initialization and its setter and getter. Next, you can use this class to specify TableView<T> and TableColumn<T> generic types, set column's cell value factory, and populate table with your images. Implementation of example CustomImage class and its practical use is shown below:

import javafx.scene.image.ImageView;

public class CustomImage {

    private ImageView image;

    CustomImage(ImageView img) {
        this.image = img;
    }

    public void setImage(ImageView value) {
        image = value;
    }

    public ImageView getImage() {
        return image;
    }
}

实际实施:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ImageViewInTableView extends Application {

    public Parent createContent() {

        /* layout */
        BorderPane layout = new BorderPane();

        /* layout -> center */
        TableView<CustomImage> tableview = new TableView<CustomImage>();

        /* layout -> center -> tableview */

        /* initialize two CustomImage objects and add them to the observable list */
        ObservableList<CustomImage> imgList = FXCollections.observableArrayList();
        CustomImage item_1 = new CustomImage(new ImageView(new Image("Icon_AddNewPatient.png")));
        CustomImage item_2 = new CustomImage(new ImageView(new Image("Icon_EditPatient.png")));
        imgList.addAll(item_1, item_2);

        /* initialize and specify table column */
        TableColumn<CustomImage, ImageView> firstColumn = new TableColumn<CustomImage, ImageView>("Images");
        firstColumn.setCellValueFactory(new PropertyValueFactory<CustomImage, ImageView>("image"));
        firstColumn.setPrefWidth(60);

        /* add column to the tableview and set its items */
        tableview.getColumns().add(firstColumn);
        tableview.setItems(imgList);

        /* add TableView to the layout */
        layout.setCenter(tableview);
        return layout;
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setScene(new Scene(createContent()));
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }

    public static void main(String args[]) {
        launch(args);
    }
}

这就是它的样子:

这篇关于Javafx在TableView中添加Image的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆