2015-02-07 64 views
0

這裏的情況是:如何告訴StackedBarChart的軸行爲?

enter image description here

該圖被初始化爲這樣:

protected NumberAxis xAxis; 
protected NumberAxis yAxis; 
protected StackedAreaChart<Number, Number> chart; 

protected final XYChart.Series<Number, Number> waitingSeries 
    = new XYChart.Series<>(); 
protected final XYChart.Series<Number, Number> startedSeries 
    = new XYChart.Series<>(); 
protected final XYChart.Series<Number, Number> successSeries 
    = new XYChart.Series<>(); 
protected final XYChart.Series<Number, Number> failureSeries 
    = new XYChart.Series<>(); 

// ... 

@Override 
public void init() 
{ 
    // ... 

    xAxis = new NumberAxis(); 
    xAxis.setLabel("Line number"); 
    xAxis.setForceZeroInRange(false); 
    xAxis.setTickUnit(1.0); 
    xAxis.setTickMarkVisible(false); 

    yAxis = new NumberAxis(); 
    yAxis.setTickMarkVisible(false); 

    chart = new StackedAreaChart<>(xAxis, yAxis); 

    chart.setAnimated(false); 
    chart.setTitle("Matcher status by line"); 

    waitingSeries.setName("Waiting for children"); 
    startedSeries.setName("Started this line"); 
    successSeries.setName("Succeeded this line"); 
    failureSeries.setName("Failed this line"); 

    final ObservableList<XYChart.Series<Number, Number>> data 
     = chart.getData(); 

    data.add(waitingSeries); 
    data.add(startedSeries); 
    data.add(successSeries); 
    data.add(failureSeries); 

    pane.setCenter(chart); 
} 

OK,所以:

  • 即使我在設置兩個軸那刻度線不應該是可見的,它們是;
  • 即使我告訴xAxis它的步驟應該是1,它顯示分數;
  • 再有就是這個,我在那裏更新數據:

(工作周圍的錯誤與SO聊天和符號列表VS代碼)

@Override 
public void showLineMatcherStatus(final List<LineMatcherStatus> list, 
    final int startLine, final int nrLines) 
{ 
    display.xAxis.setLowerBound(startLine); 
    display.xAxis.setUpperBound(startLine + nrLines - 1); 
    // etc 

在這種情況下startLine爲1和nrLines是25,那麼,endline是25.好,界限是尊重...

...但爲什麼x軸範圍從0到27.5?

如何讓軸的行爲?

+1

只是一個快速的猜測,沒有時間來測試,但您可能需要'xAxis.setAutoRanging(假);' – 2015-02-07 21:34:04

+0

@ James_D確實修復了x軸問題! – fge 2015-02-07 21:59:12

回答

1

默認情況下,NumberAxisautoRanging設置爲true,所以獲得它尊重你需要

xAxis.setAutoRanging(false); 

對於刻度線,如果你在你的形象仔細觀察,您會在上限和下限注意實際數字旁邊沒有刻度線;只是在兩者之間的「次要價值」。

所以,你既需要

xAxis.setTickMarkVisible(false); 

xAxis.setMinorTickVisible(false); 
+0

是的,我發現它後,但感謝您的汽車測距提示! – fge 2015-02-07 22:27:19

相關問題