make list view显示我想要的JavaFX

时间:2015-04-09 18:19:14

标签: listview javafx observablelist

我创建了一个类并将其添加到一个可观察列表中,我还有一个列表视图,我将其项目设置为我的可观察列表。

问题是当我将类中的对象添加到可观察列表时,列表视图在内存中显示它们的地址,如package.TestClass@574f5892,如何使列表视图显示存储在每个对象中的文本及其图像他们的记忆地址?

由于

1 个答案:

答案 0 :(得分:6)

快速入侵只是在toString中定义TestClass方法,返回要显示的文本。这不是一个非常强大的解决方案,因为通常您可能希望toString()方法返回与您希望在GUI环境中显示的文本不同的内容。

"适当"这样做的方法是在列表视图上设置cellFactory

的内容
listView.setCellFactory(lv -> new ListCell<TestClass>() {
    @Override
    public void updateItem(TestClass item, boolean empty) {
        super.updateItem(item, empty);
        if (empty) {
            setText(null);
        } else {
            String text = ... ; // get text from item
            setText(text);
        }
    }
});

要包含图片,您可以

listView.setCellFactory(lv -> new ListCell<TestClass>() {

    private final ImageView imageView = new ImageView();
    @Override
    public void updateItem(TestClass item, boolean empty) {
        super.updateItem(item, empty);
        if (empty) {
            setText(null);
            setGraphic(null);
        } else {
            String text = ... ; // get text from item
            setText(text);
            Image image = ... ; // get image from item
            imageView.setImage(image);
            setGraphic(imageView);
        }
    }
});