【问题标题】:How to get the width of the tick label of a LineChart in JavaFx?如何在 JavaFx 中获取 LineChart 刻度标签的宽度?
【发布时间】:2018-05-19 01:19:05
【问题描述】:

如何获取下面屏幕截图中红色框突出显示的部分的宽度?

我试过了

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() 或任何此类。

【问题讨论】:

    标签: java javafx javafx-8 javafx-2


    【解决方案1】:

    好吧,在 JKostikiadis 的帮助下,我想通了。基本上,正如他/她所提到的,您会得到绘图区域的layoutX,然后只需添加绘图区域的左侧填充。

    Region plotArea = (Region) sourceChart.lookup("Region");
    double plotAreaLayoutX = plotArea.getLayoutX();
    double chartLeftPad = sourceChart.getPadding().getLeft();
    double labelWidth = plotAreaLayoutX + chartLeftPad;
    

    【讨论】:

      【解决方案2】:

      在大多数情况下, 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);
      

      为了解释这里的想法是一张图片(图表背景有黑色背景):

      PS。我仍然不确定这是正确的方法,它可能会失败,具体取决于您可能在图表上应用的不同 CSS 规则

      【讨论】:

      • 您好,您的回答帮助我解决了这个问题。太感谢了。请检查我的答案以获得更精确的获取绘图区域起始位置的方法。
      猜你喜欢
      • 2016-10-31
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多