1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| public class Main extends Application {
private static class Struct {
int n;
int x;
int y;
}
private Chart createChart() {
final int minN = 0;
final int maxN = 3;
final int minX = 0;
final int maxX = 5;
final int minY = 0;
final int maxY = (int)Math.pow(maxX, maxN);
final List<LineChart.Series> seriesList = new LinkedList();
for (int n = minN; n <= maxN; n++) {
final LineChart.Series series = new LineChart.Series<>();
series.setName(String.format("n = %d", n));
for (int x = minX; x <= maxX; x++) {
final int y = (int)Math.pow(x, n);
final LineChart.Data data = new LineChart.Data<>(x, y);
final Struct struct = new Struct();
struct.n = n;
struct.x = y;
struct.y = y;
series.getData().add(data);
data.nodeProperty().addListener(observable -> {
final Node node = data.getNode();
final String text = String.format("%d = Math.pow(%d, %d)", struct.y, struct.x, struct.n);
final Tooltip tooltip = new Tooltip(text);
Tooltip.install(node, tooltip);
});
}
seriesList.add(series);
}
final NumberAxis xAxis = new NumberAxis("x", minX, maxX, 1);
final NumberAxis yAxis = new NumberAxis("y = Math.pow(x, n)", minY, maxY, (maxY - minY) / 4);
final LineChart chart = new LineChart(xAxis, yAxis);
chart.getData().setAll(seriesList);
chart.setTitle("Math.pow()");
return chart;
}
@Override
public void start(Stage primaryStage) {
final StackPane root = new StackPane();
root.getChildren().add(createChart());
Scene scene = new Scene(root, 500, 500);
primaryStage.setTitle("Test chart tip");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
} |
Partager