【问题标题】:JAVAFX - Control candleStick chart with a sliderJAVAFX - 用滑块控制烛台图
【发布时间】:2014-12-06 13:53:31
【问题描述】:

我尝试使用旧的 JAVA-FX 烛台图表,但遇到了一些问题。 每当我尝试使用附加的滑块调整图表大小时,由于某种原因,蜡烛开始变大(变粗)或变得非常小(变细)。

我的sliderX是一个带数据信息的滑块,设置最小值为最小天数(1),最大值为最大天数。

我有以下代码作为我的滑块的侦听器:

    sliderX.valueProperty().addListener(new ChangeListener<Number>() {
        public void changed(ObservableValue<? extends Number> ov,
            Number oldValue, Number newValue) {
                xAxis.setLowerBound(newValue.doubleValue());
                xAxis.setUpperBound(newValue.doubleValue() + 100);
                xAxis.setTickMarkVisible(true);
                chart.updateAxisRange();
        }

我们的想法是每次向前看 100 天,并以 +100 的间隔移动数据。 所以一开始图表会显示 0-100 的价格,然后单击左侧的滑块,他会显示 1-101 的价格等等。

我显然遗漏了一些东西,但还没有看到任何关于这个问题的正常解释,也许你可以指导我阅读我可以阅读和学习的教程/文档。 不是在寻找一个神奇的解决方案(但一个可能很好),而是更多地了解我在这方面的误解。

谢谢。

【问题讨论】:

    标签: charts javafx slider candlestick-chart


    【解决方案1】:

    在过去的几天里,我一直在处理一个类似的问题,我在以下链接中找到了一个可以更好地帮助您调整代码的解决方案:https://community.oracle.com/message/11143490#11143490

    我认为问题在于您在上下界都使用newValue,这似乎是在调整轴可视区域而不是左右平移/滚动。

    你可以尝试这样实现它:

    sliderX.valueProperty().addListener(new ChangeListener<Number>() {
        public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
    
                Delta = newValue.doubleValue() - oldValue.doubleValue(); 
    
                xAxis.setLowerBound(xAxis.getLowerBound() + Delta);
                xAxis.setUpperBound(xAxis.getUpperBound() + Delta);
                xAxis.setTickMarkVisible(true);
                chart.updateAxisRange();
        }
    }
    

    我已经在 J​​avaFX8 烛台图实现上成功使用了类似版本的代码进行平移/滚动(使用拖动事件而不是滑块,但数学应该保持不变)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多