背景

项目应用中后期的用例Demo,特此纪要!

问题

Java Swing中JFreeChart构建的柱状图(非3D)如何取消柱体的高亮显示?

说明

此Demo中点题的代码就一行,其余的代码段在其他的Demo片段中都可寻见。

样例Demo

下面是关于此Demo的代码片段:

package com.company.swing.jfreechart.barChart;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DatasetGroup;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;import java.awt.*;public class DoubleBarChar3 extends ApplicationFrame {public static void main(String[] args) {DoubleBarChar3 bar = new DoubleBarChar3("Bar Chart Demo");bar.pack();RefineryUtilities.centerFrameOnScreen(bar);bar.setVisible(true);}public DoubleBarChar3(String title) {super(title);setContentPane(new ChartPanel(createChart()));this.setPreferredSize(new Dimension(1200, 600));}private JFreeChart createChart() {// 初始化一个基础渲染规则为3D模式的柱状统计图效果的Chart图表。JFreeChart chart = ChartFactory.createStackedBarChart("DoubleBarChart", "Category", "Value", null, PlotOrientation.VERTICAL, true, true, false);{// 获取绘图区对象CategoryPlot plot = (CategoryPlot) chart.getPlot();// 设置轴1--数据匹配NumberAxis axis0 = new NumberAxis("第一条轴线");plot.setRangeAxis(0, axis0);plot.setDataset(0, createBarDataset());plot.mapDatasetToRangeAxis(0, 0);{ // 处理柱体高亮显示问题。StackedBarRenderer localStackedBarRenderer = (StackedBarRenderer) plot.getRenderer();
//                localStackedBarRenderer.setBarPainter(new StandardBarPainter());}// 重新生成一个图表渲染的对象(折线图渲染对象)。LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();{// 显示折点数据。lineandshaperenderer.setBaseItemLabelsVisible(true);lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());{// 设置拐点是否可见/是否显示拐点lineandshaperenderer.setBaseShapesVisible(true);// 设置线条是否被显示填充颜色lineandshaperenderer.setUseFillPaint(true);{// 设置第一条折线的拐点颜色lineandshaperenderer.setSeriesFillPaint(0, Color.BLUE);// 设置第二条折线的拐点颜色lineandshaperenderer.setSeriesFillPaint(1, Color.RED);}{//设置折线颜色(第一条折线数据线)lineandshaperenderer.setSeriesPaint(0, new Color(91, 155, 213));//设置折线颜色(第二条折折线据线)lineandshaperenderer.setSeriesPaint(1, Color.RED);}{// 设置第一条折线的广度(粗细度)lineandshaperenderer.setSeriesStroke(0, new BasicStroke(1.8F));// 设置第二条折线的广度(粗细度)lineandshaperenderer.setSeriesStroke(1, new BasicStroke(1.8F));}{//设置拐点数值颜色,默认黑色lineandshaperenderer.setBaseItemLabelsVisible(true); // 默认就是true,这里可以不用刻意声明。lineandshaperenderer.setBaseItemLabelPaint(Color.BLUE);}{// 解决最高柱体或折点提示内容被遮盖的问题。lineandshaperenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));lineandshaperenderer.setItemLabelAnchorOffset(2); // 设置柱形图上的文字偏离值}}}// 重构第二个数据对象的渲染方式,由现在默认的Bar(柱状统计图)重构为刚刚初始化的Line(折线统计图)的渲染模式plot.setRenderer(1, lineandshaperenderer);// 设置轴2--数据匹配NumberAxis axis1 = new NumberAxis("第二条轴线");plot.setRangeAxis(1, axis1);plot.setDataset(1, createLineDataset());plot.mapDatasetToRangeAxis(1, 1);plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);/** ---------------------- 中文乱码问题处理 Start ------------------------------- */CategoryAxis domainAxis = plot.getDomainAxis();     //水平底部列表domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 14));     //水平底部标题domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); //垂直标题ValueAxis rangeAxis = plot.getRangeAxis();//获取柱状rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 15));chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));chart.getTitle().setFont(new Font("宋体", Font.BOLD, 20));//设置标题字体/** ---------------------- 中文乱码问题处理 End ------------------------------- */{rangeAxis.setAutoRange(true);}}// 设置图表控件的背景颜色。chart.setBackgroundPaint(Color.WHITE);return chart;}private DefaultCategoryDataset createBarDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();String legend = "默认不良项";String legend1 = "不良项1";String legend2 = "不良项2";String legend3 = "不良项3";String time = "2021-08-10";String time1 = "2021-08-11";String time2 = "2021-08-12";String time3 = "2021-08-13";DatasetGroup datasetGroup = new DatasetGroup(time);dataset.setGroup(datasetGroup);dataset.setValue(60, legend, time);dataset.setValue(30, legend, time1);dataset.setValue(20, legend, time2);dataset.setValue(50, legend, time3);dataset.setValue(160, legend1, time);dataset.setValue(130, legend1, time1);dataset.setValue(120, legend1, time2);dataset.setValue(150, legend1, time3);dataset.setValue(560, legend2, time);dataset.setValue(530, legend2, time1);dataset.setValue(520, legend2, time2);dataset.setValue(550, legend2, time3);dataset.setValue(1060, legend3, time);dataset.setValue(1030, legend3, time1);dataset.setValue(1020, legend3, time2);dataset.setValue(1050, legend3, time3);return dataset;}private DefaultCategoryDataset createLineDataset() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();String legend = "机台0的良率";String legend1 = "机台1的良率";String legend2 = "机台2的良率";String legend3 = "机台3的良率";String time = "2021-08-10";String time1 = "2021-08-11";String time2 = "2021-08-12";String time3 = "2021-08-13";// group data leged. params(y, legend, x)dataset.setValue(100, legend, time);dataset.setValue(160, legend, time1);dataset.setValue(220, legend, time2);dataset.setValue(500, legend, time3);// group data leged1.dataset.setValue(1000, legend1, time);dataset.setValue(1600, legend1, time1);dataset.setValue(2200, legend1, time2);dataset.setValue(5000, legend1, time3);//        // group data leged2.
//        dataset.setValue(1680, legend2, time);
//        dataset.setValue(2280, legend2, time1);
//        dataset.setValue(2880, legend2, time2);
//        dataset.setValue(5880, legend2, time3);
//
//        // group data leged3.
//        dataset.setValue(3020, legend3, time);
//        dataset.setValue(3620, legend3, time1);
//        dataset.setValue(5220, legend3, time2);
//        dataset.setValue(8020, legend3, time3);return dataset;}
}

效果图

处理前

处理后

Java Swing中JFreeChart构建柱状图(非3D)时关于取消柱体的高亮问题的解决纪要?相关推荐

  1. Java Swing中JFreeChart构建双纵轴(双Y轴)图表的使用纪要

    背景 项目应用中整理纪要,用于参数说明.后抽部分简码以用例,特此纪要! 问题 Java Swing中JFreeChart如何构建双纵轴(双Y轴)图表 说明 JFreeChart是一个工厂类,是Swin ...

  2. swingworker_使用SwingWorker的Java Swing中的多线程

    swingworker 如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些程序. 没有什么可以阻止您在Swing中使用标准的 ...

  3. 使用SwingWorker的Java Swing中的多线程

    如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些东西. 没有什么可以阻止您在Swing中使用标准的多线程技术,并且需要遵循 ...

  4. Java Swing中的聊天气泡

    本文将向您解释"如何在Java swing应用程序中绘制聊天气泡?" 聊天气泡与呼出气泡或思想气泡相同. 今天,大多数聊天应用程序都以这种格式显示转换,因此本文将帮助您在用Java ...

  5. java swing 注册事件_比较Java Swing中三种注册事件的方法

    Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...

  6. Java Swing中键盘事件的处理

    在Java Swing编程过程中,经常需要处理键盘事件,例如处理快捷键等.这里就介绍如何定义键盘事件,以及如何处理这些事件. 在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同 ...

  7. JAVA Swing 中的表格

    今天我们来学习一下java swing中的表格怎么来使用 在用swing技术开发系统的时候, 有时候会需要用到表格,那么我们来看看表格是怎么使用的 public class Table1 extend ...

  8. java jbutton边框颜色_在Java Swing中更改JButton的边框颜色,以保留插图

    我想更改Java Swing中JButton组件的边框颜色. 我尝试了以下方法: package com.example.test; import java.awt.Color; import jav ...

  9. 我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

    本文翻译自:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing? Several ti ...

最新文章

  1. tkinter回调异常_Python tkinter文本修改后的回调
  2. vs 服务容器中已存在服务_敏捷基础设施和公共基础服务
  3. 2015蓝桥杯b组java_Java实现第十一届蓝桥杯JavaB组 省赛真题
  4. whereis 命令(转)
  5. 被硅谷带火的Cloud Native,你究竟会不会玩儿?
  6. Java千百问_05面向对象(004)_java接口到底是什么
  7. “adb server is out of date.
  8. (附源码)flutter+React Native+Springboot Api
  9. 暴风影音使用技巧十则
  10. Java面试题及答案整理(2022最新版)
  11. 躲避方块的球——C语言游戏
  12. POJ 3278,抓牛问题(BFS)
  13. Mac电脑必装的10款精品软件(上)
  14. 股票价格指数(价格加权、市值加权、价值加权)
  15. 404未找到是什么意思_常见的web错误404你知道是什么意思吗?
  16. QGraphicsItem图元拖动绘制(二)
  17. 《python编程:从入门到实践》文件和异常——百万圆周率,pi_million_digits.txt
  18. 哥,8年不见,您啥时候回来?度娘想死您了!
  19. ibm服务器有哪些型号,IBM服务器各个机型所对应ServerGuide引导光盘.doc
  20. 在小米路由器mini上安装Transmission挂BT/PT

热门文章

  1. 安装和简单使用visual studio 2017
  2. 【技术干货】听阿里云CDN安防技术专家金九讲SystemTap使用技巧
  3. camera中文版软件 ip_网络摄像机监控(IP Camera Viewer Pro)
  4. NORDIC-NRF52832蓝牙芯片选型表,基本参数以及应用领域
  5. 因果推断笔记——因果图建模之Uber开源的CausalML(十二)
  6. PDF编辑之加密的PDF文档如何解除密码和进行编辑
  7. html怎样图片不会失真,css解决图片失真
  8. echarts 仪表盘样式
  9. 深度特征融合---高低层(多尺度)特征融合
  10. ubuntu20 降低python版本后 打不开终端 NO module named ‘gi’