You may see on the attached movie, that I've changed fill (to red color, actually), and started to change upper bound. You can see, that fill is applied only to the newly created labels.
Code:
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaCharts extends Application {
public static void main(String[] args) {
launch(args);
}
NumberAxis axis1 = new NumberAxis(0, 100, 10);
NumberAxis axis2 = new NumberAxis(0, 100, 10);
LineChart testedLineChart = new LineChart(axis1, axis2);
VBox vb = new VBox();
@Override
public void start(Stage stage) throws Exception {
testedLineChart.setTitle("LineChart");
testedLineChart.setStyle("-fx-border-color: darkgray;");
ObservableList list = FXCollections.observableArrayList();
int max = 100;
int min = 30;
for (int i = 0; i < 30; i++) {
XYChart.Data newData = new XYChart.Data();
newData.setXValue(new Random().nextDouble() * (max - min) + min);
newData.setYValue(new Random().nextDouble() * (max - min) + min);
list.add(newData);
}
Object[] array = list.toArray();
Arrays.sort(array, new Comparator() {
@Override
public int compare(Object t, Object t1) {
return (int) Math.round(((Double) ((XYChart.Data) t).getXValue()) - ((Double) ((XYChart.Data) t1).getXValue()));
}
});
XYChart.Series serie = new XYChart.Series("serie", FXCollections.observableArrayList(array));
testedLineChart.getData().add(serie);
testedLineChart.setAlternativeColumnFillVisible(true);
testedLineChart.setAlternativeRowFillVisible(true);
Pane pane = new Pane();
pane.setPrefSize(600, 600);
Slider slider = new Slider(0, 600, 0);
slider.valueProperty().bindBidirectional(axis2.upperBoundProperty());
Button button = new Button("click me");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
axis2.setTickLabelFill(Color.RED);
}
});
pane.setPrefSize(600, 600);
pane.getChildren().add(testedLineChart);
vb.getChildren().addAll(pane, slider, button);
Scene scene = new Scene(vb, 700, 700);
stage.setScene(scene);
stage.show();
}
}
Click button and start to move slider leftward and rightward.
Code:
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaCharts extends Application {
public static void main(String[] args) {
launch(args);
}
NumberAxis axis1 = new NumberAxis(0, 100, 10);
NumberAxis axis2 = new NumberAxis(0, 100, 10);
LineChart testedLineChart = new LineChart(axis1, axis2);
VBox vb = new VBox();
@Override
public void start(Stage stage) throws Exception {
testedLineChart.setTitle("LineChart");
testedLineChart.setStyle("-fx-border-color: darkgray;");
ObservableList list = FXCollections.observableArrayList();
int max = 100;
int min = 30;
for (int i = 0; i < 30; i++) {
XYChart.Data newData = new XYChart.Data();
newData.setXValue(new Random().nextDouble() * (max - min) + min);
newData.setYValue(new Random().nextDouble() * (max - min) + min);
list.add(newData);
}
Object[] array = list.toArray();
Arrays.sort(array, new Comparator() {
@Override
public int compare(Object t, Object t1) {
return (int) Math.round(((Double) ((XYChart.Data) t).getXValue()) - ((Double) ((XYChart.Data) t1).getXValue()));
}
});
XYChart.Series serie = new XYChart.Series("serie", FXCollections.observableArrayList(array));
testedLineChart.getData().add(serie);
testedLineChart.setAlternativeColumnFillVisible(true);
testedLineChart.setAlternativeRowFillVisible(true);
Pane pane = new Pane();
pane.setPrefSize(600, 600);
Slider slider = new Slider(0, 600, 0);
slider.valueProperty().bindBidirectional(axis2.upperBoundProperty());
Button button = new Button("click me");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
axis2.setTickLabelFill(Color.RED);
}
});
pane.setPrefSize(600, 600);
pane.getChildren().add(testedLineChart);
vb.getChildren().addAll(pane, slider, button);
Scene scene = new Scene(vb, 700, 700);
stage.setScene(scene);
stage.show();
}
}
Click button and start to move slider leftward and rightward.