JavaFX LineChart测试

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();
        
    }

}

 

posted @ 2022-05-04 16:00  洛尔  阅读(154)  评论(0)    收藏  举报