gpt4 book ai didi

listview - 使 ListView 显示我想要的JavaFX

转载 作者:行者123 更新时间:2023-12-02 22:07:37 25 4
gpt4 key购买 nike

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

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

谢谢

最佳答案

一个快速技巧就是在您的 TestClass 中定义一个 toString 方法,返回您想要显示的文本。这并不是一个真正可靠的解决方案,因为通常您可能希望 toString() 方法返回与您想要在 GUI 环境中显示的文本不同的内容。

“正确”的方法是在 ListView 上设置一个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);
}
}
});

关于listview - 使 ListView 显示我想要的JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com