#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, спасибо за предложение 🙂