在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
分享到:
相关推荐
在MT4中,要添加ASI指标,用户可以在"插入"菜单中选择"指标",然后在"自定义"类别下找到ASI。将ASI指标添加到图表后,用户可以调整其参数,如颜色、线条样式和周期,以满足自己的视觉偏好和分析需求。 总的来说,...
JFreeChart库由David Gilbert发起,它提供了一整套API,使得开发者能够轻松地在Java应用程序中插入和自定义各种图表。JFreeChart不仅支持静态图表,还支持动态和交互式图表,可以与Java Swing、JavaFX等图形界面库...
在销售管理系统中,Swing可能被用来创建登录窗口、菜单栏、按钮、文本框等元素。 2. **事件处理**: Swing支持事件驱动编程,即用户与UI交互时触发特定的事件。例如,当用户点击登录按钮时,会触发一个事件,系统...
这包括创建SQL语句、执行查询、插入、更新和删除数据。 4. **用户认证与授权**:登录功能涉及到用户认证,即验证用户名和密码是否正确。系统可能使用简单的哈希算法对密码进行存储,以提高安全性。同时,权限控制也...
在这个进销存管理系统中,Swing 被用来设计和实现各种交互式的界面元素,如收银台、库存管理界面和统计图表等。 MySQL 是一款广泛使用的开源关系型数据库管理系统,具有高性能、易用性和稳定性等特点。在这个项目中...
它提供了一套全面的API,使得开发者可以轻松地在Java应用程序、Web应用或Swing组件中插入图表。JFreeChart支持多种图表类型,满足了数据分析和报告的各种需求。 2. **图表类型** - **饼图**:用于显示各部分占总体...
《Java Swing实现的教师信息管理系统详解》 Java Swing是Java平台上用于构建图形用户界面(GUI)的库,它...同时,设计报告中的图表和文档为学习过程提供了清晰的指导,有助于深入理解整个系统的设计思路和实现方法。
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...
在Java中,主要通过Java AWT(Abstract Window Toolkit)和Swing库来实现绘图功能。 1. **Java AWT**: AWT是Java的基础窗口工具包,它提供了基本的GUI(图形用户界面)组件,如按钮、文本框等。其中,`Graphics`类...
4. 数据展示:通过表格和图表形式展示选课结果,如选课人数统计、课程热度等,这部分可能涉及到Swing中的JTable和JChart组件。 5. 日志与错误处理:系统应记录操作日志,同时对可能出现的异常进行捕获和处理,确保...
在这个飞机订票系统中,Swing用于设计订票界面,如航班查询、乘客信息输入、订单确认等界面。 2. **Oracle数据库**: Oracle是世界上最流行的商业关系型数据库管理系统之一,以其高性能、高可扩展性和安全性著称。在...
3. **插入图表到工作表**:通过POI将图像文件作为单元格内容插入到Excel工作表中。 4. **数据更新**:当数据发生变化时,重新生成图表并替换原有图像,保持图表与数据的一致性。 **三、使用JFreeChart的步骤** 1. ...
4. **Cewolf基本标签说明**:Cewolf提供了一些HTML标签,如`<cewolf:chart>`,可以直接在页面中插入图表,并可以通过属性控制图表的类型、数据源等。 **iText** iText是一个强大的Java库,用于创建和修改PDF文档。...
在Microsoft PowerPoint 2003中,想要在幻灯片中插入图表,可以通过单击【插入】菜单中的【图表】命令来实现。这与使用“格式”工具栏上的按钮或其他方法有所不同。正确的方法是从菜单中选择相应的命令。 ### 4. ...
通过这个库,开发者可以轻松地在Java应用程序、Web应用、Swing或JavaFX应用中插入动态和静态的图表。以下是对JFreeChart主要功能和使用方法的详细介绍: 1. **图表类型**:JFreeChart支持多种图表类型,如柱状图...
在Java编程环境下,开发股票图表通常涉及数据处理、图形库的使用以及用户界面的设计。以下是一些关于如何使用Java来创建股票图表的关键知识点: 1. 数据获取:首先,你需要获取股票的历史和实时数据。这可以通过...
当需要在PDF文档中插入动态生成的图表时,可以先使用JFreeChart创建所需的图表,然后利用iText的API将这个图表作为图像插入PDF。具体步骤如下: 1. 使用JFreeChart创建图表对象,配置好所需的数据和样式。 2. 将...
其强大之处在于,开发者可以通过简单的API调用,轻松地在Java应用程序、Web应用、Swing组件或Servlet中插入高质量的图表。 1. **基本概念** - **API**:JFreeChart 提供的 API 非常友好,使得开发者可以方便地创建...
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种复杂且美观的图表。在Java世界里,如果你需要为你的项目添加数据可视化功能,JFreeChart是一个值得考虑的选择。本篇文章将...
例如,在主函数中通过`Random`类生成了一些示例数据,并调用`MyPanel.insert`方法将其插入到图表中。 ### 总结 综上所述,这个Java程序是一个简单的图形界面应用,实现了条形图和饼图的动态交替展示功能。它涵盖了...