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