【问题标题】:How to make JavaFX Chart NumberAxis only show Integer value,not double如何使 JavaFX 图表 NumberAxis 只显示整数值,而不是双精度
【发布时间】:2014-07-13 12:34:35
【问题描述】:

我正在尝试创建一个图表,其 yAxis 旨在显示员工编号,因此它只能显示整数。
但是我发现这并不容易,因为我已经尝试过 yAxis.setTickUnit(1) 但是当值很小时它不起作用(等等。最大值是 3,它仍然会显示0.5,1.5...,我只想要像 1,2,3,4..这样的刻度值)
我怎么能做到这一点?

根据@jewelsea 的回答,我试过这个(在 javafx 2.2 jdk7 中)

class IntegerStringConverter extends StringConverter<Number>{

    public IntegerStringConverter() {
    }

    @Override
    public String toString(Number object) {
        if(object.intValue()!=object.doubleValue())
            return "";
        return ""+(object.intValue());
    }

    @Override
    public Number fromString(String string) {
        Number val = Double.parseDouble(string);
        return val.intValue();
    }
}  

它的结果是可以接受的。双精度值消失了,但仍然有刻度。

【问题讨论】:

  • 我遇到了同样的问题,所以我使用了你的代码,它可以工作,谢谢。但是当 Number 轴只有 0 和 1 时,1 消失了,你是否面临同样的问题?
  • 要摆脱未标记的蜱尝试yAxis.setMinorTickVisible(false);。为我工作。

标签: charts javafx numbers axis


【解决方案1】:

在轴上设置tickLabelFormatter

【讨论】:

  • NumberAxis.DefaultFormatter 不起作用,所以我写了一个class IntegerStringConverter extends StringConverter&lt;Number&gt;{ public IntegerStringConverter() { } @Override public String toString(Number object) { if(object.intValue()!=object.doubleValue()) return ""; return ""+(object.intValue()); } @Override public Number fromString(String string) { Number val = Double.parseDouble(string); return val.intValue(); } } 没有双值了,但刻度仍然存在
  • 顺便说一句,感谢您对 javafx 的所有回答!我从你身上学到了很多
【解决方案2】:

您可以使用构造函数设置 NumberAxis(double lowerBound, double upperBound, double tickUnit) 值。这适用于 JaxaFX 8,以防像我这样的人仍在寻找它。

来源: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/chart/NumberAxis.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2016-02-18
    • 2019-07-03
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多