我有一个ListView
,其中我要添加一个HyperLink
的列表,
以下是 MCVE ,
public class TestListView extends Application {
private int counter = 0;
@Override
public void start(Stage stage) {
ListView<String> listView = new ListView<>();
listView.setCellFactory(param -> new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
} else {
Hyperlink link = new Hyperlink(item);
setGraphic(link);
setText(item);
}
}
});
stage.setScene(new Scene(listView));
stage.show();
Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(2), (ActionEvent event) -> {
listView.getItems().add("Link " + counter++);
}));
fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
fiveSecondsWonder.play();
}
public static void main(String[] args) {
launch(args);
}
}
在ListView
中添加链接没有问题,但是当我在垂直方向(手动-使用鼠标)调整ListView
的大小(连续)时,行条目就会重复。
如何解决此问题?
答案 0 :(得分:2)
当listCell为空时,仅设置文本。还将图形设置为null。否则,当单元被重用时,标记的图形部分仍会显示,直到被覆盖为止。