import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Data;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class LineChartTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage arg0) throws Exception {
TextArea tx = new TextArea();
tx.setPrefWidth(100);
tx.setPrefHeight(50);
tx.setEditable(false);
tx.setMaxHeight(50);
tx.setMaxWidth(100);
final NumberAxis chapterNumber = new NumberAxis();//章节号
final NumberAxis count = new NumberAxis();//出现次数
chapterNumber.setLabel("章节号");
count.setLabel("出现次数");
final LineChart<Number, Number> figureCountLC = new LineChart<>(chapterNumber, count);
figureCountLC.setTitle("人物在各章节出现次数折线图");
//数据序列
XYChart.Series<Number, Number> series = new XYChart.Series<Number, Number>();
//数据
final XYChart.Data<Number, Number> d1 = new XYChart.Data<Number, Number>(1, 0);
final XYChart.Data<Number, Number> d2 = new XYChart.Data<Number, Number>(2, 4);
final XYChart.Data<Number, Number> d3 = new XYChart.Data<Number, Number>(3, 5);
final XYChart.Data<Number, Number> d4 = new XYChart.Data<Number, Number>(4, 9);
final XYChart.Data<Number, Number> d5 = new XYChart.Data<Number, Number>(7, 5);
final XYChart.Data<Number, Number> d6 = new XYChart.Data<Number, Number>(8, 0);
series.getData().addAll(d1, d2, d3, d4, d5, d6);
for(int i=0; i<6; i++) {
XYChart.Data<Number, Number> d = (Data<Number, Number>) series.getData().get(i);
System.out.println(d.getXValue().toString() +" "+ d.getYValue().toString());
Button bu = new Button();
bu.setPrefHeight(10);
bu.setPrefWidth(10);
d.setNode(bu);
d.getNode().setOnMouseClicked(e ->
tx.setText("章节号: " + d.getXValue() + "\n出现次数: " + d.getYValue()));
}
figureCountLC.getData().addAll(series);
figureCountLC.setLegendVisible(false);
HBox hb = new HBox();
hb.setAlignment(Pos.CENTER);
hb.getChildren().addAll(tx, figureCountLC);
Scene scene = new Scene(hb, 800, 600);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
}
}