JavaFX TableView数据消失Bug求助:特定操作下数据异常消失
JavaFX TableView 异常Bug:滚轮滚动后点击表格数据消失
触发条件
- TableView显示水平滚动条
- TableView显示垂直滚动条,但该滚动条处于不可滚动状态
- 鼠标滚轮向下滚动后点击表格,表格内部分数据会消失
已监听TableView的itemProperty(),未发现元素数据有任何变化。
环境信息
- JDK 17
- JavaFX 21

复现代码
package org.example; import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ObservableValue; import javafx.scene.Scene; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import javafx.util.Callback; import java.util.HashMap; import java.util.Map; public class TestTableView extends Application { @Override public void start(Stage primaryStage) { StackPane root = new StackPane(); TableView<Map> tableView = new TableView<>(); int size = 10; for (int i = 0; i < size; i++) { TableColumn<Map,String> tableColumn = new TableColumn<>(i+"\""); int finalI = i; tableColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Map, String>, ObservableValue<String>>() { @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<Map, String> mapStringCellDataFeatures) { return new SimpleStringProperty(finalI+"\""); } }); tableView.getColumns().add(tableColumn); } for (int i = 0; i < 10; i++) { Map<String,String> map = new HashMap<>(); tableView.getItems().add(map); for (int j = 0; j < size; j++) { map.put(j+"\"", j+"\""); } } root.getChildren().add(tableView); // 根据屏幕分辨率调整高度以复现Bug Scene scene = new Scene(root, 250, 290); primaryStage.setScene(scene); primaryStage.setTitle("Popup at Screen Corner"); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
内容的提问来源于stack exchange,提问作者Lson
相关产品推荐
相关产品推荐

