public static void setupXAxis(NumberAxis numberAxis, long min, long max) { numberAxis.setAutoRanging(false); numberAxis.setTickUnit((max - min) / 20); numberAxis.setLowerBound(min); numberAxis.setUpperBound(max); numberAxis.setTickLabelFormatter(new StringConverter<Number>() { private final SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy\nHH:mm:ss,SSS"); @Override public String toString(Number object) { return format.format(new Date(object.longValue())); } @Override public Number fromString(String string) { return null; } }); }
public TPSChart() { final NumberAxis yAxis = new NumberAxis(); this.xAxis = new NumberAxis( 0, 512, 1000 ); this.xAxis.setAutoRanging( false ); this.chart = new LineChart<>( xAxis, yAxis ); this.chart.setAnimated( false ); this.chart.setCreateSymbols( false ); this.chart.setLegendVisible( false ); this.fullTimeSeries = new XYChart.Series<>(); this.actualTimeSeries = new XYChart.Series<>(); this.averageTimeSeries = new XYChart.Series<>(); this.scrollBar = new ScrollBar(); this.scrollBar.valueProperty().addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue ) { currentDataStart = (int) ( newValue.floatValue() * ( TimeUnit.SECONDS.toNanos( 1 ) / tickNanos ) * 60 ); updateChart(); } } ); }
tickLine.tickLabelFormatterProperty().bind(getSkinnable().labelFormatterProperty()); tickLine.setAnimated(false); tickLine.setAutoRanging(false); tickLine.setSide(isHorizontal() ? Side.BOTTOM : Side.RIGHT); tickLine.setUpperBound(rangeSlider.getMax());