簡體   English   中英

更改 JavaFX 軸的顯示值

[英]Change display values for JavaFX Axis

NumberAxis 和 CategoryAxis 用於繪制我的 AreaChart。 在此處輸入圖像描述

我想知道如何更改兩個軸的顯示值,因為我需要:

  • 顯示 humanReadableByteCount (KB, MB, GB) 而不是 Y 軸的字節表示
  • 僅顯示 X 軸的小時:分鍾:秒

我無法在文檔中找到有關如何修改顯示值的任何信息: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/chart/NumberAxis.Z569EZA880D52C67AFC35FDC70D5FCC69D

我能夠通過實現覆蓋 toString 的setTickLabelFormatter來解決這個問題:

    ratesAxis.setTickLabelFormatter(new StringConverter<>() {
        @Override
        public String toString(Number t) {
            return String.valueOf(ReadFile.humanReadableByteCountSI(t));
        }

        @Override
        public Number fromString(String string) {
            return 1;
        }
    });

從另一個 class:

static String humanReadableByteCountSI(Number bytesString) {
    int bytes = (int) bytesString.intValue();
    if (-1000 < bytes && bytes < 1000) {
        return bytes + " B";
    }
    CharacterIterator ci = new StringCharacterIterator("kMGTPE");
    while (bytes <= -999_950 || bytes >= 999_950) {
        bytes /= 1000;
        ci.next();
    }
    return String.format("%.1f %cB", bytes / 1000.0, ci.current());
}

結果: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM