У меня есть TableView с несколькими TableColumns, и я хочу разместить узел ниже определенной TableColumn. Как получить точную позицию (x, y-координаты) TableColumn, чтобы я мог привязать свойства перевода моего узла?position of TableColumn in Scene
Вот фрагмент того, как я поставил кнопку в правом верхнем углу моего TableView:
button.translateXProperty().unbind();
button.translateXProperty().bind(tableView.widthProperty().divide(2.0).subtract(button.getWidth()/2.0 + 2.0) + tableView.localToScene(0.0, 0.0).getX());
Это работает отлично, но, очевидно, только для TableView. В TableColumns нет этих свойств перевода или методов localToScene, поэтому я не могу напрямую получить позицию, к которой я хотел бы привязать свой узел.
Мое текущее решение (на самом деле это не так хорошо) заключается в следующем: Я прочитал позицию своего TableView в Scene (PointA), а затем просмотрю список всех столбцов (tableView. getColumns()) и проверьте, видна ли каждая из них, и если да, добавьте их ширину в значение X PointA. Я делаю это, пока не найду фактический столбец, который я хочу разместить ниже. Теперь проблема в том, что я не могу просто привязать позицию Nodes к этой точке, потому что, когда я изменяю порядок столбцов или делаю одно из них невидимым, мой столбец меняет положение на экране. Я должен был бы добавить слушателя к порядку столбца и видимости ...
Есть ли более эффективный способ делать то, что я хочу? : D
Я собираюсь попробовать это решение, так как оно не зависит от поиска или опций. Я выберу это как лучший ответ на данный момент, но я все еще надеюсь на более простой способ сделать это, может быть, в обновленной версии JavaFX: D – user2336377
@ user2336377 нам может повезти в jdk9: из-за модуляции, skin api находится под обследованием, чтобы быть обнародованным ... или полностью потерянным: из-за модуляции внутренний api не будет доступен никоим образом (оставив поиск Джеймса единственным вариантом) – kleopatra
Я только что реализовал это в своей программе, и он не работает как есть, потому что я получаю следующую ошибку при попытке привязать метку к позиции столбца: «Label.layoutX: связанное значение не может быть установлено». Но когда я меняю привязки из '.layoutXProperty(). Bind (...)' to '.translateXProperty(). Bind (...)' все работает так, как я этого хочу :) – user2336377