Table, sichtbare Zeilen ermitteln
Um zu ermitteln, welche Zeilen in der Tabelle sichbar sind, kann folgender Code verwendet werden:
public int[] getVisibleRange(TableView table) { TableViewSkin<?> skin = (TableViewSkin) table.getSkin(); if (skin == null) { return new int[] {0, 0}; } VirtualFlow<?> flow = (VirtualFlow) skin.getChildren().get(1); int indexFirst; int indexLast; if (flow != null && flow.getFirstVisibleCellWithinViewPort() != null && flow.getLastVisibleCellWithinViewPort() != null) { indexFirst = flow.getFirstVisibleCellWithinViewPort().getIndex(); if (indexFirst >= table.getItems().size()) indexFirst = table.getItems().size() - 1; indexLast = flow.getLastVisibleCellWithinViewPort().getIndex(); if (indexLast >= table.getItems().size()) indexLast = table.getItems().size() - 1; } else { indexFirst = 0; indexLast = 0; } return new int[] {indexFirst, indexLast}; }
Der Aufruf:
int[] range = getVisibleRange(); System.out.println("Der Index der ersten sichbaren Zeile lautet: " + range[0]; System.out.println("Der Index der zweiten sichbaren Zeile lautet: " + range[1];
Stichworte:
JavaFX Table, TableView, sichtbare Zeilen, Beispiel, visible rows