JavaFX ListView调整大小行为

时间:2018-09-28 05:32:48

标签: java javafx

我有一个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的大小(连续)时,行条目就会重复。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

当listCell为空时,仅设置文本。还将图形设置为null。否则,当单元被重用时,标记的图形部分仍会显示,直到被覆盖为止。