codestory

Die Anleitung zu JavaFX PieChart

  1. JavaFX PieChart
  2. Das Beispiel über PieChart
  3. Anpassende PieChart
  4. PieChart und das Event

1. JavaFX PieChart

JavaFX PieChart ist eine Grafik, in der die Daten in einer Kreis zu viele dreieckigen Keilen (triangular wedges), sogenanten Slice geteilt wird. Jede Slice stellt die Prozentsatz einer angemessenen Wert dar.
GDP des Länder im Jahr von 2015:
Country
GDP (Million dollars)
USA
17.947.195
EU
11.540.278
China
10.982.829
Japan
4.116.242
Others
28.584.442

2. Das Beispiel über PieChart

Beispiel über die Grafik PieChart für GDP der Länder 2015.
PieChartDemo.java
package org.o7planning.javafx.piechart;

import javafx.application.Application;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class PieChartDemo extends Application {

   @Override
   public void start(Stage primaryStage) throws Exception {

       PieChart pieChart = new PieChart();

       PieChart.Data slice1 = new PieChart.Data("USA", 17947195);
       PieChart.Data slice2 = new PieChart.Data("EU", 11540278);
       PieChart.Data slice3 = new PieChart.Data("China", 10982829);
       PieChart.Data slice4 = new PieChart.Data("Japan", 4116242);
       PieChart.Data slice5 = new PieChart.Data("Others", 28584442);

       pieChart.getData().add(slice1);
       pieChart.getData().add(slice2);
       pieChart.getData().add(slice3);
       pieChart.getData().add(slice4);
       pieChart.getData().add(slice5);
     
       pieChart.setLegendSide(Side.LEFT);

       primaryStage.setTitle("JavaFX PieChart (o7planning.org)");
       StackPane root = new StackPane(pieChart);

       Scene scene = new Scene(root, 400, 200);

       primaryStage.setScene(scene);

       primaryStage.show();
   }

   public static void main(String[] args) {
       Application.launch(args);
   }
}

3. Anpassende PieChart

PieChart stellt standardmäßig seine vollen Elemente : Label, und Legend. Sie können die Elemente durch setLabelsVisile, setLegendVisible visible oder invisible setzen
pieChart.setLabelsVisile(false);
pieChart.setLegendVisible(false);
Die Position der Legend Anzeige und Länge von Label Line installieren
chart.setLabelLineLength(10);
chart.setLegendSide(Side.LEFT);
standardmäßig sind die Slice im Uhrzeigersinn. Aber Sie können sie durch Methode setClockwise(false) gegen Uhrzeigersinn setzen
Im Uhrzeigersinn
Gegen Uhrzeigersinn
Sie können die Start - Ecke von PieChart mittels setStartAngle machen.
pieChart.setStartAngle(30);

4. PieChart und das Event

Obwohl sind Slice von PieChart kein Node Gegenstand . Aber jede PieChart.Data hat ein mit ihr verbindete Node und Sie können es benutzen
PieChartEventDemo.java
package org.o7planning.javafx.piechart;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class PieChartEventDemo extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        PieChart pieChart = new PieChart();

        PieChart.Data slice1 = new PieChart.Data("USA", 17947195);
        PieChart.Data slice2 = new PieChart.Data("EU", 11540278);
        PieChart.Data slice3 = new PieChart.Data("China", 10982829);
        PieChart.Data slice4 = new PieChart.Data("Japan", 4116242);
        PieChart.Data slice5 = new PieChart.Data("Others", 28584442);

        pieChart.getData().add(slice1);
        pieChart.getData().add(slice2);
        pieChart.getData().add(slice3);
        pieChart.getData().add(slice4);
        pieChart.getData().add(slice5);
       
        pieChart.setPrefSize(400, 300);

        pieChart.setLegendSide(Side.LEFT);
        pieChart.setStartAngle(30);

        final Label caption = new Label("");
        caption.setTextFill(Color.WHITE);
        caption.setStyle("-fx-font: 12 arial;");

        for (final PieChart.Data data : pieChart.getData()) {
            data.getNode().addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent e) {
                    caption.setTranslateX(e.getSceneX());
                    caption.setTranslateY(e.getSceneY());

                    caption.setText(String.valueOf(data.getPieValue()));
                }
            });
        }

        primaryStage.setTitle("JavaFX PieChart (o7planning.org)");
        AnchorPane root = new AnchorPane();
        root.getChildren().addAll(pieChart, caption);
       
       

        Scene scene = new Scene(root, 400, 300);

        primaryStage.setScene(scene);

        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

Die Anleitungen JavaFX

Show More