0
我目前正在嘗試創建一個圖表,該圖表允許我重新啓動x軸並繼續繪圖。軸範圍是0-100,但是當圖形達到100時,需要以下值再次爲0.但是,什麼使得圖表返回到初始零點。如何重新創建NumberAxis並移至JavaFX LineChart中的下一個值?
在接下來的兩張圖片中我將展示如何在當前的圖表上工作。
什麼使圖表返回到最初的零和繼續。
我需要的是這樣的:
非常感謝您的幫助!
我目前正在嘗試創建一個圖表,該圖表允許我重新啓動x軸並繼續繪圖。軸範圍是0-100,但是當圖形達到100時,需要以下值再次爲0.但是,什麼使得圖表返回到初始零點。如何重新創建NumberAxis並移至JavaFX LineChart中的下一個值?
在接下來的兩張圖片中我將展示如何在當前的圖表上工作。
什麼使圖表返回到最初的零和繼續。
我需要的是這樣的:
非常感謝您的幫助!
可以利用axis.setTickLabelFormatter()
格式化刻度標籤:
public class TickLabelFormatterDemo extends Application
{
private static final int RANGE = 100;
private int last_X_Axis_Val = 20;
@Override
public void start(Stage stage)
{
stage.setTitle("Sample");
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
xAxis.setForceZeroInRange(false);
xAxis.setTickLabelFormatter(new StringConverter<Number>()
{
@Override
public String toString(Number object)
{
int i = object.intValue() % RANGE;
return String.valueOf(i == 0 ? RANGE : i);
}
@Override
public Number fromString(String string)
{
return null;
}
});
final LineChart<Number, Number> lineChart
= new LineChart<>(xAxis, yAxis);
lineChart.setTitle("Monitoring");
XYChart.Series series = new XYChart.Series();
series.setName("Values");
Random random = new Random();
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(2), new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
if (series.getData().size() > 5)
{
series.getData().remove(0);
}
series.getData().add(new XYChart.Data(last_X_Axis_Val, random.nextInt(50)));
last_X_Axis_Val += 20;
}
}));
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();
Scene scene = new Scene(lineChart, 800, 600);
lineChart.getData().add(series);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args)
{
launch(args);
}
}