PieChart示例

news2025/1/15 7:56:22

PieChart是JavaFX中的饼图,示例如下:

PieChartUtil.java文件,饼图数据设置。

package javafx8.ch29;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.chart.PieChart;

/**
 * @copyright 2023-2022
 * @package   javafx8.ch29
 * @file      PieChartUtil.java
 * @date      2023-08-31 14:22
 * @author    qiao wei
 * @version   1.0
 * @brief     饼图数据集合。
 * @history
 */
public class PieChartUtil {
    
    public static ObservableList<PieChart.Data> getChartData() {
        ObservableList<PieChart.Data> data = FXCollections. observableArrayList();
        
        /**
         * 将要显示的饼图数据添加到列表中,参数1是表头显示的内容,参数2是饼图要显示的数据。
         */
        data.add(new PieChart.Data("China", 1275));
        data.add(new PieChart.Data("India", 1017));
        data.add(new PieChart.Data("Brazil", 172));
        data.add(new PieChart.Data("UK", 59));
        data.add(new PieChart.Data("USA", 285));
        
        // 表头显示数据比例。
//        data.add(new PieChart.Data("China : " + (1275 * 100 / (1275 + 1017 + 172 + 59 + 285) + "%"), 1275));
//        data.add(new PieChart.Data("India : " + (1017 * 100 / (1275 + 1017 + 172 + 59 + 285) + "%"), 1017));
//        data.add(new PieChart.Data("Brazil : " + (172 * 100 / (1275 + 1017 + 172 + 59 + 285) + "%"), 172));
//        data.add(new PieChart.Data("UK : " + (59 * 100 / (1275 + 1017 + 172 + 59 + 285) + "%"), 59));
//        data.add(new PieChart.Data("USA : " + (285 * 100 / (1275 + 1017 + 172 + 59 + 285) + "%"), 285));
        
        return data;
    }
}

PieChartTest.java文件,显示饼图数据

package javafx8.ch29;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.Side;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;

/**
 * @copyright 2023-2022
 * @package   javafx8.ch29
 * @file      PieSliceTest.java
 * @date      2023-08-31 16:23
 * @author    qiao wei
 * @version   1.0
 * @brief     
 * @history
 */
public class PieSliceTest extends Application {

    public static void main(String[] args) {
        Application.launch(PieSliceTest.class, args);
    }
    
    @Override
    public void start(Stage stage) throws Exception {
        PieChart chart = new PieChart();
        chart.setTitle("Population in 2000");
        
        // Place the legend on the left side
        chart.setLegendSide(Side.LEFT);
        
        // Set the data for the chart
        ObservableList<PieChart.Data> chartData = PieChartUtil.getChartData();
        chart.setData(chartData);
        
        // Add a Tooltip to all pie slices
        this.addSliceTooltip(chart);
        StackPane root = new StackPane(chart);
        Scene scene = new Scene(root);
        
        stage.setScene(scene);
        stage.setTitle("Customizing Pie Slices");
        stage.show();
    }

    private void addSliceTooltip(PieChart chart) {
        // Compute the total pie value
        double totalPieValue = 0.0d;
        
        // Traverse items to compute total value.
        for (PieChart.Data d : chart.getData()) {
            totalPieValue += d.getPieValue();
        }
        
        // Add a tooltip to all pie slices
        for (PieChart.Data d : chart.getData()) {
            Node sliceNode = d.getNode();
            double pieValue = d.getPieValue();
            double percentPieValue = (pieValue / totalPieValue) * 100;
            
            // Create and install a Tooltip for the slice
            String message = d.getName() + "=" + pieValue + " (" + String.format("%.2f", percentPieValue) + "%)";
            Tooltip tooltip = new Tooltip(message);
            tooltip.setStyle("-fx-background-color: yellow;" + "-fx-text-fill: black;");
            tooltip.setShowDelay(new Duration(50));
            Tooltip.install(sliceNode, tooltip);
        }
    }
}

运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

油画|《凤尾山中》听竹涛,阅山水

《凤尾山中》 陈可之2021年绘 油画《凤尾山中》以竹下仰望山林的视角&#xff0c;描绘出桂林山水在自然光影中的秀美姿态&#xff0c;迤逦风光似乎让心灵都得到自然的洗礼。 画中没有构建明显的前景边框&#xff0c;但上半部分垂下的翠竹枝叶、下部分的江水&#xff0c;以及画…

使用C++操作Redis客户端

"Who can say where the path will go?" 前面我们花了很大的篇幅&#xff0c;讲解了redis中常见常使用的五种数据结构&#xff0c;以及五种数据结构的操作和redis命令。不过在日常开发中&#xff0c;我们的这些操作都是在redis为我们提供的客户端中的&#xff0c;就…

MySQL连接查询和存储过程

目录 一、连接查询 1、内连接 2、左连接 3、右连接 二、存储过程 1、存储过程简介 2、存储过程的优点 3、语法 4、不带参数的存储过程创建 5、带参数的存储过程创建 6、删除存储过程 三、总结 1、连接查询 2、存储过程 一、连接查询 mysql的连接查询&#xff0c;通…

【C语言奥义】char和char数组和char*总是搞混

这边我直接展示个图大家看下&#xff1a; 然后我们看下运行的结果&#xff1a; 为啥第一行的结尾会有个a呢? 因为char数组市存储单个字符的,没有结束符,我们的字符串都应该有结束符,来告诉编译器结束位置,所以需要给char数组后面加一个’\0’元素&#xff1a; 这样就没有问题了…

【LeetCode】双指针妙解有效三角形的个数

Problem: 611. 有效三角形的个数 文章目录 题目分析讲解算法原理复杂度Code 题目分析 首先我们来分析一下本题的思路 看到题目中给出的示例 题目的意思很简单&#xff0c;就是将给到的数字去做一个组合&#xff0c;然后看看这三条边是否可以构成三角形。那判断的方法不用我说&a…

Android样本Repack重打包检测思路

1. 什么是Android样本重打包&#xff0c;为什么要检测重打包 &#xff08;1&#xff09;apk是zip&#xff0c;很容易做repack &#xff08;2&#xff09;repack后&#xff0c;被抄袭&#xff0c;redirect ad&#xff0c;或者插入malicious payloads &#xff08;3&#xff09;…

springboot基础(79):通过pdf模板生成文件

文章目录 前言通过pdf模板生成文件一 . 制作模板二、编辑代码实现模板生成pdf文件三、pdf在线预览和文件下载 扩展问题遇到的问题1. 更换字体为宋体常规 前言 通过pdf模板生成文件。 本章代码已分享至Gitee: https://gitee.com/lengcz/pdfdemo01 通过pdf模板生成文件 一 . 制…

Docker部署(5)——使用docker run命令部署运行jar项目

对于一些简单的单体项目&#xff0c;可以使用 docker run 命令可以直接在命令行中运行容器&#xff0c;无需事先构建镜像。这相较于之前使用的 dockerfile 文件来运行部署项目相当于是另外一种简单的部署方法&#xff0c;关于之前使用dockerfile 文件来运行部署这种方法&#x…

「MySQL-04」Linux环境下使用C/C++连接并操纵MySQL

目录 一、准备mysql库&#xff1a;Connector/C 1. 查看是否有mysql相关的库和头文件 2. 安装devel(开发库) 3.到官网下载开发包&#xff0c;并上传到Linux 3.0 须知 3.1 到官网下载开发包 3.2 上传安装包至Linux 二、mysql库&#xff1a;Connector/C 的使用 1. 创建并初始化mys…

DataLoader的使用

示例代码&#xff1a; import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter# 准备的测试数据集 test_data torchvision.datasets.CIFAR10("./dataset", trainFalse, transformtorchvision.transforms.…

react里map嵌套

1、tab是我自己声明的变量&#xff0c;item是下标&#xff0c;index是key值&#xff08;这些都可以改为自己的数据&#xff09; tab是声明的所有数据&#xff0c;而list是所有数据里面所需要的那一个&#xff0c;items和indexs可以虽然写一个名称代替

HTML基础--Form表单--内联元素

目录 Form表单 表单元素 创建表单 () 文本输入 () 密码输入 单选按钮 () 和 复选框 () 下拉列表 () 和 选项 ()提交按钮 () 重置按钮 () 块元素与行内元素&#xff08;内联元素&#xff09; Form表单 HTML中的表单&#xff08;<form>&#xff09;是一个重要的元…

WPF C# .NET7 基础学习

学习视频地址&#xff1a;https://www.bilibili.com/video/BV1hx4y1G7C6?p3&vd_source986db470823ebc16fe0b3d235addf050 开发工具&#xff1a;Visual Studio 2022 Community 基础框架&#xff1a;.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项&#xff…

EasyAVFilter的初衷:把ffmpeg.c当做SDK来用,而不是当做EXE来用

之前我们做一个视频点播的功能&#xff0c;大概的流程就是将上传上来的各种格式的视频&#xff0c;用FFmpeg统一进行一次转码&#xff0c;如果probe到视频的编码格式是H.264就调用-vcodec copy&#xff0c;如果probe到视频的编码格式不是H.264就调用-vcodec libx264&#xff0c…

SpringBoot中自定义starter

SpringBoot自动装配原理&#xff1a; EnableAutoConfiguration注解开启自动装配功能&#xff0c;该注解通常放在应用的主类上。spring.factories文件位于META-INF目录下的配置文件中定义各个自动装配类的全限定名 当SpringBoot启动时&#xff0c;会加载classpath下所有的spri…

JavaScript 手写题

基础手写 全排列&#xff08;力扣原题&#xff09; 要求以数组的形式返回字符串参数的所有排列组合。 注意&#xff1a; 字符串参数中的字符无重复且仅包含小写字母返回的排列组合数组不区分顺序const _permute string > {const result []const map new Map()const df…

vue使用打印组件print-js

项目场景&#xff1a; 由于甲方要求&#xff0c;项目需要打印二维码标签&#xff0c;故开发此功能 开发流程 安装包&#xff1a;npm install print-js --saveprint-js的使用 <template><div id"print" ref"print" ><p>打印内容<p&…

可拖拽编辑的流程图X6

先上图 //index.html&#xff0c;有时候可能加载失败&#xff0c;那就再找一个别的cdn 或者npm下载&#xff0c;如果npm下载&#xff0c; //那么需要全局引入或者局部引入&#xff0c;代码里面写法也会不同&#xff0c;详细的可以看示例<script src"https://cdn.jsdeli…

python可视化——pycharm——Grid - Grid_overlap_multi_xy_axis图

这段代码使用了pyecharts库来创建一个Grid-Overlap图&#xff0c;包括柱状图和折线图。 首先&#xff0c;创建了一个柱状图对象bar&#xff0c;并添加了两个y轴的数据。第一个y轴代表csdn博客数量&#xff0c;第二个y轴代表粉丝数量。然后&#xff0c;使用extend_axis方法扩展…

6、深入解析Kotlin类与对象:构造、伴生、单例全面剖析

前言 本篇文章将带您了解Kotlin编程中的重要概念&#xff1a;类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样&#xff0c;我们会逐步揭开这些概念的面纱&#xff0c;让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者&#xff0c;本文都将为…