在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
分享到:
相关推荐
Java Swing自定义观感的一个小例子(仅以自定义treeUI为例)。仅仅举例如何实现java SWing自定义观感,并不完整,童鞋可以根据treeUI编写其他控件的UI。
Java Html DJNativeSwing.jar DJNativeSwing-SWT.jar
包含 旧版本 gnujaxp.jar jcommon-1.0.13.jar jfreechart-1.0.10-experimental.jar jfreechart-1.0.10-swt.jar swtgraphics2d.jar junit.jar 新版本 jcommon-1.0.23.jar jfreechart-1.0.19.jar ...
swing 中JTABLE中添加控件的例子 可以引申出添加很多控件
用Java程序读取Excel表格里的内容并显示在Swing界面里。
用swing实现的制作(ERP)报表;很好很简单方便!
很全面的哟,swing中文帮助文件,让你快速掌握各种java swing控件
swing中的mvc实例 mvc在swing中的体现
用Swing中实现小球, 控制小球数量, 算法
swing 开发 Linux和window系统解决乱码参考文档,个人总结,不喜勿碰
Eclipse中swing插件Eclipse中swing插件Eclipse中swing插件
swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器swing计算器 swing计算器 简易计算器
swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...
图形界面,把版本1的过程改为图形化显示。在文本框下提示用户输入文件名,然后以 统计直方图的形式显示每个字母的出现频率。运行示例:
swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程swing 教程
(java)Swing中弹出对话框的几种方式
Java编程语言一般是和重要的企业级应用程序联系在一起的,...\r\n 在Swing中构建分层、覆盖组件并灵活使用透明窗格屏蔽Swing接口内部的复杂细节和伸缩性。 ================================== 对学习SWING很有帮助!
本文档是 Java 2 Platform Standard Edition 5.0 的 API 规范。完全中文,有用的可以下载
很好的一个中文帮助API,易于学习和开发过程中遇到问题的查看