添加更多项目时不要滚动TableView

时间:2019-01-01 11:56:18

标签: java javafx tableview

我想将项目动态添加到表中。 我是这样的:

public class TestApp extends Application {

    public static void main(final String[] args) {
    launch(args);
    }

    private final AtomicLong counter = new AtomicLong();

    @Override
    public void start(final Stage primaryStage) {

    final VBox root = new VBox(5);
    root.setPadding(new Insets(10));
    root.setAlignment(Pos.CENTER);

    final TableView<String> tableView = new TableView<>();
    final TableColumn<String, String> column = new TableColumn<>("Text");
    column.setCellValueFactory(f -> new SimpleStringProperty(f.getValue()));

    tableView.getColumns().add(column);

    // Add some sample items to our TableView
    for (int i = 0; i < 100; i++) {
        tableView.getItems().add("Item #" + counter.incrementAndGet());
    }

    final Button button = new Button("Add items");
    final long oldElement = counter.get();
    button.setOnAction(e -> {
        // Add more elements
        for (int i = 0; i < 10; i++) {
        tableView.getItems().add("Item #" + counter.incrementAndGet());
        }
        tableView.scrollTo("Item #" + oldElement);
    });

    root.getChildren().add(button);
    root.getChildren().add(tableView);

    // Show the Stage
    primaryStage.setWidth(300);
    primaryStage.setHeight(300);
    primaryStage.setScene(new Scene(root));
    primaryStage.show();
    }
}

(示例取自here

我现在要更改的是,当表格已经完全向下滚动时,并且我添加了更多项目时,表格会自动向下滚动。

“滚动状态”似乎保持不变,这就是为什么我仍然看到表格的最底部(以及新元素)的原因。

如何在表中添加项目,但保持滚动在当前位置/当前行?

'scrollTo'起作用,但是将最后一个元素从视图的底部移到顶部,这同样会引起刺激。

0 个答案:

没有答案
相关问题