JavaFx: куда ячейки «перемещаются» при прокрутке? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь улучшить мою реализацию по исправлению 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?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...