gpt4 book ai didi

JavaFx ListView 不显示文本,但在 cellFactory 之后工作

转载 作者:行者123 更新时间:2023-11-29 04:16:32 25 4
gpt4 key购买 nike

我有一个 ListView点击监听器。我想在悬停时添加新的监听器。我用 CellFactory 编码了那个新的监听器(下面的代码)。仅使用此代码我的 ListView ( <String> ) 显示没有文本的项目,但两个监听器都工作正常(点击监听器无论如何都工作正常)并且项目被正确选择。

代码CellFactoryControllerinitialize() :

myListView.setCellFactory(lv -> {
ListCell<String> cell = new ListCell<String>() {};
cell.hoverProperty().addListener((obs, wasHovered, isNowHovered) -> {
if(isNowHovered) {
handleCellHover(cell);
} else {
handleCellHoverEnd();
}
});
return cell;
});

添加元素代码:

// ...
ObservableList<String> data = FXCollections.observableArrayList(data); //data is List<String>
listView.setItems(data);

最佳答案

ListCell.updateItem 默认情况下除了分配 itemempty 属性外什么都不做。您需要覆盖此方法以使用该项目来修改单元格的外观,例如通过设置 text 属性:

ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);

if (empty || item == null) {
setText("");
} else {
setText(item);
}
}
};

(默认的 cellFactory 使用具有类似 updateItem 实现的 ListCell 的子类。)

关于JavaFx ListView 不显示文本,但在 cellFactory 之后工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046444/

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