Как получить ширину метки тика LineChart в JavaFx? - PullRequest
0 голосов
/ 19 мая 2018

Как получить ширину сечения, выделенную красным корпусом на снимке экрана ниже?

chart

Я пробовал

LineChart<Number, Number> sourceChart = ...;
NumberAxis axis = (NumberAxis) sourceChart.getXAxis();
FilteredList<Node> filtered = axis.getChildrenUnmodifiable().filtered(node -> node instanceof Text);
node = filtered.get(0);

filtered - это список тиков, но node не имеет метода, который возвращает ширину тика, например getPrefWidth() или любого другого типа.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Хорошо, так что я понял это с помощью JKostikiadis.В основном, как он / она упомянул, вы получаете layoutX площади графика, а затем просто добавляете левый отступ области графика.

Region plotArea = (Region) sourceChart.lookup("Region");
double plotAreaLayoutX = plotArea.getLayoutX();
double chartLeftPad = sourceChart.getPadding().getLeft();
double labelWidth = plotAreaLayoutX + chartLeftPad;
0 голосов
/ 19 мая 2018

В большинстве случаев yAxis.getWidth () более чем достаточно, но если вы хотите быть точным, нет прямого способа получить эту информацию (если я не ошибаюсь), поэтому вам придется найти обходной путь,Я хотел бы предложить получить доступ к фону диаграммы-графика, а затем найти layoutX этого региона, который на самом деле является шириной выделенной области.Вот как это можно сделать:

Region r = (Region) lineChart.lookup("Region"); // access chart-plot-background
double yAxisWidth = r.getLayoutX(); // find out where it starts
System.out.println(yAxisWidth);

Чтобы объяснить мысль, это картинка (фон графика-графика имеет черный цвет фона):

enter image description here

PS.Тем не менее, я не уверен, что это правильный подход, и он может потерпеть неудачу в зависимости от различных правил CSS, которые вы можете применять на графике

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