JavaFX: куда «перемещаются» ячейки при прокрутке?

#java #javafx #tableview #javafx-8 #skin

#java #javafx #просмотр таблицы #javafx-8 #Кожа

Вопрос:

Я пытаюсь улучшить свою реализацию по исправлению TableColum поэтому, когда пользователь прокручивает фиксированный столбец, он игнорируется и остается видимым каждый раз.

Текущая реализация довольно грязная:

 public class FixedTableCell<S, T> extends TableCell<S, T> {

    {
        Platform.runLater(() -> {
            ScrollBar scrollBar = TableViewUtil.getHorizontalScrollBar(getTableView());
            scrollBar.valueProperty().addListener(TableViewUtil.xCoordinateChangeListener(this));
        });
    }

    @Override
    protected void updateItem(T item, boolean empty) {
        super.updateItem(item, empty);
        if (empty || item == null) {
            setText(null);
            setGraphic(null);
        } else {
            setText(item.toString());
        }
        Platform.runLater(() -> {
            ScrollBar scrollBar = TableViewUtil.getHorizontalScrollBar(getTableView());
            TableViewUtil.setNodeFixed(this, scrollBar.getValue());
        });
    }
}
  

Где setNodeFixed

 public static <T extends Node> void setNodeFixed(T node, double value) {
    node.toFront();
    node.setTranslateX(value);
}
  

Мне удалось исправить часть заголовка, внедрив пользовательский Skin для TableView, и в TableViewSkin#horizontalScroll мне удалось установить для заголовка translateX значение полосы прокрутки.

Но мне интересно, где установлена позиция X ячейки?

Я попытался создать новую ячейку, но там ничего нет, в этом методе у TableView меня нет доступа к ячейкам, поэтому я сейчас произвольно ищу метод, который мог бы быть связан с X изменением координат ячейки, но я действительно не понимаю, как это сделать.

Вопрос в том, где находится место / какой это метод, который отвечает за установку координаты X ячейки при tableView прокрутке по горизонтали?

Комментарии:

1. взгляните на TableView2 из controlsfx ..

2. Доступно ли это для JavaFX8? Или только для 11?

3. как насчет поиска 😉 Шансы для fx8 лучше, чем для fx11, подозреваю, что миграция произойдет с fx12 (из-за отсутствия промежуточного API), не уверен, насколько они далеки (недавно написал свой собственный для клиента, было не просто весело … 😉

4. Я пытаюсь, но, кажется, я что-то упускаю… У меня есть controlsfx в моем проекте версии 8.40.14, но он не содержит TableView2, и мне не удается его получить, я действительно не знаю почему…

5. Это работало с версией 8.40.15, спасибо за предложение 🙂