пакеты в соответствии с требованиями классов, используемых в вашем коде.

олучить индексы видимых строк в TableView в JavaFX 9? В JavaFX 8 я могу сделать следующее:

  // --- The offending imports in Java 9
  // import com.sun.javafx.scene.control.skin.TableViewSkin;
  // import com.sun.javafx.scene.control.skin.VirtualFlow;

  /**
   * This is a total hack. We need it as scrollTo jumps the selected
   * row to the top of the table. Jarring if the row is already 
   * visible. As a workaround, we only scroll if the row isn't already
   * visible
   *
   * @return A 2 element ray with the start and end index of visible rows
   */
  public int[] getVisibleRows() {
      TableView<?> tableView = getTableView();
      TableViewSkin<?> skin = (TableViewSkin<?>) tableView.getSkin();
      if (skin == null) return new int[] {0, 0};
      VirtualFlow<?> flow = (VirtualFlow<?>) skin.getChildren().get(1);
      int idxFirst;
      int idxLast;
      if (flow != null &&
              flow.getFirstVisibleCellWithinViewPort() != null &&
              flow.getLastVisibleCellWithinViewPort() != null) {
          idxFirst = flow.getFirstVisibleCellWithinViewPort().getIndex();
          if (idxFirst > tableView.getItems().size()) {
              idxFirst = tableView.getItems().size() - 1;
          }
          idxLast = flow.getLastVisibleCellWithinViewPort().getIndex();
          if (idxLast > tableView.getItems().size()) {
              idxLast = tableView.getItems().size() - 1;
          }
      }
      else {
          idxFirst = 0;
          idxLast = 0;
      }
      return new int[]{idxFirst, idxLast};
  }

В Java 9, как часть модульности, команда JDK скрывает API, которые не были общедоступными (например, все пакеты, которые начинаются с 'com.sun'). Если я пытаюсь скомпилировать это в Java 9, я получаю ошибки:

  [...] cannot find symbol
  [ERROR]   symbol:   class TableViewSkin
  [ERROR]   location: package com.sun.javafx.scene.control.skin

  [...] cannot find symbol
  [ERROR]   symbol:   class VirtualFlow
  [ERROR]   location: package com.sun.javafx.scene.control.skin

Есть ли официальный способ получить видимые строки в TableView? Есть идеи по другому, лучше обойти это?

ОБНОВЛЕНО: Решение на основе решения @ user4712734

TableViewExt<?> tableViewExt = new TableViewExt<>(tableView);

public int[] getVisibleRows() {
    return new int[]{ tableViewExt.getFirstVisibleIndex(), 
                      tableViewExt.getLastVisibleIndex()};
}

Код для TableViewExt

Ответы на вопрос(2)

Ваш ответ на вопрос