2017-01-31 13 views
1

私はJavaFXを使ってチャートを開発しています。 DateAxisが必要なので、私は DateAxisからthis codeを使用します。結果はthisです。しかし、私はショー2の日付 間隔をしたい、私は解決策を見つけられませんでした。結果は常に1日の間隔を示します。これは私のコードです。JavaFXでDateAxis TickUnit(Date Interval)を設定する方法は?

public class Main extends Application { 

@Override 
public void start(Stage primaryStage) throws Exception { 

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); 
    ObservableList<XYChart.Series<Date, Number>> series = FXCollections.observableArrayList(); 

    ObservableList<XYChart.Data<Date, Number>> series1Data = FXCollections.observableArrayList(); 
    series1Data.add(new XYChart.Data<Date, Number>(new GregorianCalendar(2018,1, 12).getTime(), 2)); 
    series1Data.add(new XYChart.Data<Date, Number>(new GregorianCalendar(2018, 1, 15).getTime(), 3)); 

    series1Data.add(new XYChart.Data<Date, Number>(new GregorianCalendar(2018, 1, 16).getTime(), 4)); 


    series.add(new XYChart.Series<>("Series1", series1Data)); 

    NumberAxis numberAxis = new NumberAxis(); 
    DateAxis dateAxis = new DateAxis(); 
    dateAxis.setAutoRanging(false); 
    dateAxis.setLowerBound(new GregorianCalendar(2018,2, 12).getTime()); 
    dateAxis.setUpperBound(new GregorianCalendar(2018,2, 16).getTime()); 
    dateAxis.setTickLabelFormatter(new StringConverter<Date>() { 
     @Override 
     public String toString(Date object) { 
      return simpleDateFormat.format(object); 
     } 
     @Override 
     public Date fromString(String string) { 
      return null; 
     } 
    }); 

    LineChart lineChart = new LineChart(dateAxis, numberAxis, series); 
    Scene scene = new Scene(lineChart, 900, 400); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
    } 
} 

どうすればいいですか?

答えて

0

私は間違っているかもしれませんが、DateAxis APIでは表示間隔を指定することはできませんので、自分で変更する必要があります。

DateAxisクラスには、Interval列挙型があります。このいずれかに

DAY(Calendar.DATE, 1), 

:あなたはこの行を変更した場合

DAY(Calendar.DATE, 2), 

し、必要に応じて他の間隔コメントを...

//  HOUR_12(Calendar.HOUR, 12), 

2日間隔が表示されます。これを行うことは、作成者の意図に反することです。間隔を自動的に調整するようにこの方法で記述したのは、非常に粗末な解決策です。より良い方は、calculateTickValuesメソッドを書き直すだけでなく、プライベート列挙型を何らかのパブリックAPIに変更する必要があります。

+0

ありがとうございました! – rlawlstjd007

関連する問題