如何获得下面屏幕截图中红色外壳突出显示的部分宽度?
我试过了
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()
或其他任何类型的刻度线宽度。
答案 0 :(得分:1)
好吧,所以我在JKostikiadis的帮助下弄清楚了。基本上,正如他/她提到的那样,你得到了绘图区域的layoutX
,然后只需添加绘图区域的左边距。
Region plotArea = (Region) sourceChart.lookup("Region");
double plotAreaLayoutX = plotArea.getLayoutX();
double chartLeftPad = sourceChart.getPadding().getLeft();
double labelWidth = plotAreaLayoutX + chartLeftPad;
答案 1 :(得分:0)
在大多数情况下,yAxis.getWidth()就足够了,但是如果你想要精确的话,就没有直接获取信息的方法(如果我没有错的话),所以你必须找到一个解决方法,我建议访问图表 - 情节 - 背景,然后找到该Region的layoutX,它实际上是您标记区域的宽度。以下是如何实现这一目标:
Region r = (Region) lineChart.lookup("Region"); // access chart-plot-background
double yAxisWidth = r.getLayoutX(); // find out where it starts
System.out.println(yAxisWidth);
为了解释这里的想法是一张图片(图表 - 情节 - 背景有黑色背景颜色):
PS。我仍然不确定这是正确的方法,它可能会失败,具体取决于您可能在图表上应用的不同CSS规则