2014-12-06 101 views
0

我試圖使用已知的JAVA-FX蠟燭圖表,並且遇到了一些麻煩。 當我嘗試用我附加的滑塊重新調整圖表的大小時,出於某種原因蠟燭開始變大(變厚)或變得非常小(變薄)。JAVAFX - 使用滑塊控制candleStick圖表

我的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的價格等。

我明顯錯過了一些東西,但沒有看到任何正常關於這個問題的解釋,也許你可以把我引導到我可以閱讀和學習的教程/文檔。 不尋找一個神奇的解決方案(但一個可以是好的),但更多的地方去了解我在這方面的誤解。

謝謝。

回答

0

在過去的幾天我一直工作在一個類似的問題,我找到了一個解決方案,可以更好地幫助你適應在下面的鏈接代碼: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(); 
    } 
} 

我已經使用這個代碼的類似版本成功上JavaFX8陰陽燭圖實施平移/滾動(使用拖放事件,而不是一個滑塊,但數學應該保持不變)