`
lcywjvb
  • 浏览: 60896 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

在swing中插入图表

阅读更多
在swing中插入图表


参考代码: 
Java code
package swing;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import java.util.*;

import javax.swing.*;
import javax.swing.Timer;

import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.*;

public class DynaChartPanel extends JPanel implements ActionListener {
    
    private Vector<Integer> v1 = new Vector<Integer>(); 
    private Vector<Integer> v2 = new Vector<Integer>(); 
    private Vector<Integer> times = new Vector<Integer>();
    private String[] rowKeys = { "Team1", "Team2" };
    private Timer timer;
    private int second = 0;
    private int s1 = 0, s2 = 0;
    private Random rnd = new Random();
    private int width = 90;
    private final int height = 610;
    
    public DynaChartPanel()
    {
        times.add(second);
        v1.add(s1);
        v2.add(s2);
        //
        setPreferredSize(new Dimension(width, height));
    }
    
    public void start()
    {
        timer = new Timer(3000, this);    //测试代码,3秒一次,可改为30000(秒)
        timer.start();
    }
    
    public void stop()
    {
        if(timer!=null&&timer.isRunning())
            timer.stop();
    }
    
    public CategoryDataset getCategoryDataset()
    {
        Integer[] t = new Integer[0];
        Number[][] data = new Integer[][]{
            v1.toArray(t),
            v2.toArray(t)
        };
        DefaultCategoryDataset result = new DefaultCategoryDataset();
        for (int r = 0; r < data.length; r++) {
            for (int c = 0; c < data[r].length; c++) {
                result.addValue(data[r][c], rowKeys[r], times.get(c));
            }
        }
        return result;
    }
    
    public void paintComponent(Graphics g)
    {
        Dimension size = new Dimension( width, height);
        setPreferredSize(size);
        //
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        //
        CategoryDataset dataset = getCategoryDataset();
        //以下10来行代码亦可由ChartFactory.createLineChart()完成
        CategoryAxis categoryAxis = new CategoryAxis("时间(秒)");
        ValueAxis valueAxis = new NumberAxis("比分");
        LineAndShapeRenderer renderer = new LineAndShapeRenderer(true, false);
            renderer.setBaseToolTipGenerator(
                    new StandardCategoryToolTipGenerator());
        CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, 
                renderer);
        plot.setOrientation(PlotOrientation.VERTICAL);
        
        JFreeChart chart = new JFreeChart("折线图", JFreeChart.DEFAULT_TITLE_FONT,
                plot, true);
        //
        Rectangle2D area1 = new Rectangle(0, 0, width, 300);
        chart.draw(g2, area1);
        //
        chart = ChartFactory.createBarChart("直方图", "时间(秒)", "比分", dataset, PlotOrientation.VERTICAL, true, true, false);
        Rectangle2D area2 = new Rectangle(0, 300, width, 300);
        chart.draw(g2, area2);
    }

    public void actionPerformed(ActionEvent e) {
        String message = "输入格式为“v1,v2”,比如“11,12”:";
        while(true)
        {
            //每次加1到3,方便演示之用
            s1 += rnd.nextInt(3) + 1; s2+= rnd.nextInt(3) + 1;
            //使用注释部分代码可以达到手动输入两队比分的目的
            String input = s1 + "," + s2;//JOptionPane.showInputDialog( message, s1 + "," + s2);
            
            try
            {
                String[] score = input.split(",");
                s1 = Integer.parseInt(score[0]);
                s2 = Integer.parseInt(score[1]);
                second += 30;
                v1.add(s1);
                v2.add(s2);
                times.add(second);
                //
                width += 30;
                repaint();
                //
                break;
            }catch(Exception ex)
            {
                message = "输入无效!请重输!\n输入格式为“v1,v2”,比如“11,12”:";
            }
        }
    }
    
    public static void main(String[] args) {
        JFrame frm = new JFrame();
        frm.setTitle("动态的折线图与直方图");
        frm.setSize(600, 650);
        DynaChartPanel pnlMain = new DynaChartPanel();        
        frm.getContentPane().add(new JScrollPane(pnlMain));
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frm.setVisible(true);
        pnlMain.start();        
    }
}


运行效果: 
  • 大小: 75.1 KB
分享到:
评论

相关推荐

    Accumulative Swing Index - ASI - MetaTrader 4脚本.zip

    在MT4中,要添加ASI指标,用户可以在"插入"菜单中选择"指标",然后在"自定义"类别下找到ASI。将ASI指标添加到图表后,用户可以调整其参数,如颜色、线条样式和周期,以满足自己的视觉偏好和分析需求。 总的来说,...

    基于java的开发源码-图表 JFreeChart.zip

    JFreeChart库由David Gilbert发起,它提供了一整套API,使得开发者能够轻松地在Java应用程序中插入和自定义各种图表。JFreeChart不仅支持静态图表,还支持动态和交互式图表,可以与Java Swing、JavaFX等图形界面库...

    Java-Swing-GUI-销售管理系统.zip

    在销售管理系统中,Swing可能被用来创建登录窗口、菜单栏、按钮、文本框等元素。 2. **事件处理**: Swing支持事件驱动编程,即用户与UI交互时触发特定的事件。例如,当用户点击登录按钮时,会触发一个事件,系统...

    java swing 家庭理财系统

    这包括创建SQL语句、执行查询、插入、更新和删除数据。 4. **用户认证与授权**:登录功能涉及到用户认证,即验证用户名和密码是否正确。系统可能使用简单的哈希算法对密码进行存储,以提高安全性。同时,权限控制也...

    JAVA swing+mysql 进销存管理系统(暑期中软实训作业)

    在这个进销存管理系统中,Swing 被用来设计和实现各种交互式的界面元素,如收银台、库存管理界面和统计图表等。 MySQL 是一款广泛使用的开源关系型数据库管理系统,具有高性能、易用性和稳定性等特点。在这个项目中...

    jfreechart案例

    它提供了一套全面的API,使得开发者可以轻松地在Java应用程序、Web应用或Swing组件中插入图表。JFreeChart支持多种图表类型,满足了数据分析和报告的各种需求。 2. **图表类型** - **饼图**:用于显示各部分占总体...

    教师信息管理系统 基于Java Swing写的,适用于课程设计,附设计报告

    《Java Swing实现的教师信息管理系统详解》 Java Swing是Java平台上用于构建图形用户界面(GUI)的库,它...同时,设计报告中的图表和文档为学习过程提供了清晰的指导,有助于深入理解整个系统的设计思路和实现方法。

    jfreechart生成图片及导出pdf 、excel

    JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...

    java绘图组件 很不错的可以插入到网页中

    在Java中,主要通过Java AWT(Abstract Window Toolkit)和Swing库来实现绘图功能。 1. **Java AWT**: AWT是Java的基础窗口工具包,它提供了基本的GUI(图形用户界面)组件,如按钮、文本框等。其中,`Graphics`类...

    Java swing mysql实现的学生选课系统项目源码.zip

    4. 数据展示:通过表格和图表形式展示选课结果,如选课人数统计、课程热度等,这部分可能涉及到Swing中的JTable和JChart组件。 5. 日志与错误处理:系统应记录操作日志,同时对可能出现的异常进行捕获和处理,确保...

    java swing和Oracle飞机订票系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全).zip

    在这个飞机订票系统中,Swing用于设计订票界面,如航班查询、乘客信息输入、订单确认等界面。 2. **Oracle数据库**: Oracle是世界上最流行的商业关系型数据库管理系统之一,以其高性能、高可扩展性和安全性著称。在...

    JFreeChart

    3. **插入图表到工作表**:通过POI将图像文件作为单元格内容插入到Excel工作表中。 4. **数据更新**:当数据发生变化时,重新生成图表并替换原有图像,保持图表与数据的一致性。 **三、使用JFreeChart的步骤** 1. ...

    flex实战报表:jFreeChart,cewolf,iText.doc

    4. **Cewolf基本标签说明**:Cewolf提供了一些HTML标签,如`&lt;cewolf:chart&gt;`,可以直接在页面中插入图表,并可以通过属性控制图表的类型、数据源等。 **iText** iText是一个强大的Java库,用于创建和修改PDF文档。...

    2021-2022计算机二级等级考试试题及答案No.10385.docx

    在Microsoft PowerPoint 2003中,想要在幻灯片中插入图表,可以通过单击【插入】菜单中的【图表】命令来实现。这与使用“格式”工具栏上的按钮或其他方法有所不同。正确的方法是从菜单中选择相应的命令。 ### 4. ...

    jfreechart.rar

    通过这个库,开发者可以轻松地在Java应用程序、Web应用、Swing或JavaFX应用中插入动态和静态的图表。以下是对JFreeChart主要功能和使用方法的详细介绍: 1. **图表类型**:JFreeChart支持多种图表类型,如柱状图...

    股票图表

    在Java编程环境下,开发股票图表通常涉及数据处理、图形库的使用以及用户界面的设计。以下是一些关于如何使用Java来创建股票图表的关键知识点: 1. 数据获取:首先,你需要获取股票的历史和实时数据。这可以通过...

    iText PDF ; JFreeChar

    当需要在PDF文档中插入动态生成的图表时,可以先使用JFreeChart创建所需的图表,然后利用iText的API将这个图表作为图像插入PDF。具体步骤如下: 1. 使用JFreeChart创建图表对象,配置好所需的数据和样式。 2. 将...

    jfreechart-1.0.12.tar.gz

    其强大之处在于,开发者可以通过简单的API调用,轻松地在Java应用程序、Web应用、Swing组件或Servlet中插入高质量的图表。 1. **基本概念** - **API**:JFreeChart 提供的 API 非常友好,使得开发者可以方便地创建...

    JFreeChat学习

    JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种复杂且美观的图表。在Java世界里,如果你需要为你的项目添加数据可视化功能,JFreeChart是一个值得考虑的选择。本篇文章将...

    java绘图代码

    例如,在主函数中通过`Random`类生成了一些示例数据,并调用`MyPanel.insert`方法将其插入到图表中。 ### 总结 综上所述,这个Java程序是一个简单的图形界面应用,实现了条形图和饼图的动态交替展示功能。它涵盖了...

Global site tag (gtag.js) - Google Analytics