`

sleep(100)-Swing动态生成折线图

阅读更多
如何做一个实时动态Swing折线图呢?
由于脑海中构想了如下图这样一个画面,所以经过查资料写代码,实现了视觉化的图景。分享之。。。



public class JFSwingDynamicChart extends JFrame implements ActionListener {
	private TimeSeries series;
	private double lastValue = 100.0;
	
	/**
	 * 构造
	 */
	public JFSwingDynamicChart() {
		getContentPane().setBackground(Color.green);
	}

	/**
	 * 创建应用程序界面
	 */
	public void createUI() {
		this.series = new TimeSeries("Math.random()-随机数据", Millisecond.class);
		TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
		ChartPanel chartPanel = new ChartPanel(createChart(dataset));
		chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

		JPanel buttonPanel = new JPanel();
		buttonPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
		add(chartPanel);
		add(buttonPanel, BorderLayout.SOUTH);
	}

	/**
	 * 根据结果集构造JFreechart报表对象
	 * 
	 * @param dataset
	 * @return
	 */
	private JFreeChart createChart(XYDataset dataset) {
		JFreeChart result = ChartFactory.createTimeSeriesChart("Swing动态折线图", "系统当前时间",
				"动态数值变化", dataset, true, true, false);
		XYPlot plot = (XYPlot) result.getPlot();
		ValueAxis axis = plot.getDomainAxis();
		axis.setAutoRange(true);
		axis.setFixedAutoRange(60000.0);
		axis = plot.getRangeAxis();
		axis.setRange(0.0, 200.0);
		return result;
	}

	public void actionPerformed(ActionEvent e) {
	}

	/**
	 * 动态运行
	 */
	public void dynamicRun() {
		while (true) {
			double factor = 0.90 + 0.2 * Math.random();
			this.lastValue = this.lastValue * factor;
			Millisecond now = new Millisecond();
			this.series.add(new Millisecond(), this.lastValue);
			try {
				Thread.currentThread().sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	// 主函数入口
	public static void main(String[] args) {
		JFSwingDynamicChart jsdChart = new JFSwingDynamicChart();
		jsdChart.setTitle("Swing动态折线图");
		jsdChart.createUI();
		jsdChart.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jsdChart.setBounds(100, 100, 900, 600);
		jsdChart.setVisible(true);
//		Color c=new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)); 
		
		jsdChart.dynamicRun();
	}

}



-------------------------
Thread.currentThread().sleep(100); //线程交替,给绘制线程以时间可以解决此异常
Exception in thread "main" org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period Wed Jul 07 11:36:28 CST 2010 but the series already contains an observation for that time period. Duplicates are not permitted.  Try using the addOrUpdate() method.
	at org.jfree.data.time.TimeSeries.add(TimeSeries.java:529)
	at org.jfree.data.time.TimeSeries.add(TimeSeries.java:572)
	at org.jfree.data.time.TimeSeries.add(TimeSeries.java:558)
	at chapter09.JFSwingDynamicChart.dynamicRun(JFSwingDynamicChart.java:76)
	at chapter09.JFSwingDynamicChart.main(JFSwingDynamicChart.java:96)
  • 大小: 103.7 KB
分享到:
评论
7 楼 wjyjimy 2010-07-25  
renpeng301 写道
我还以为是自己画的呢··


确实我也以为,,要是用JAVA2D画会更可观一点
6 楼 andy54321 2010-07-21  
JFreechart,大家从哪里下载的?怎么我这里登陆SourceForge貌似不能,是不是需要翻wall啊~~
5 楼 renpeng301 2010-07-09  
我还以为是自己画的呢··
4 楼 zeronelee 2010-07-09  
楼主是用的JFREECHAR吧 JFREECHARE的时序图就可以动态试试的显示折线
3 楼 Rossalee 2010-07-09  
很兴奋现在有这么多说Swing的贴子。
2 楼 wese345 2010-07-08  
最近JE上多了很多Swing的帖子啊
以前觉得Swing做东西太复杂,而且界面也不行
看来我out了!
1 楼 llfzy 2010-07-07  
好久没搞swing老。。。飘过

相关推荐

    Python库 | big_sleep-0.0.1-py3-none-any.whl

    《Python库:深入理解big_sleep-0.0.1-py3-none-any.whl》 在Python的世界里,库是开发者的重要工具,它们提供了一系列预定义的函数和模块,简化了编程过程,提高了效率。本文将详细介绍名为"big_sleep"的Python库...

    基于java-swing的贪吃蛇游戏

    《基于Java-Swing的贪吃蛇游戏开发详解》 在计算机编程领域,Java语言以其跨平台性和丰富的库支持,成为了开发各种应用的热门选择。在本篇中,我们将深入探讨如何利用Java的Swing库来实现一款经典的贪吃蛇游戏。...

    PyPI 官网下载 | big_sleep-0.8.5-py3-none-any.whl

    标题中的"PyPI 官网下载 | big_sleep-0.8.5-py3-none-any.whl"指的是一款名为`big_sleep`的Python库,版本号为0.8.5,它在Python Package Index(PyPI)官网上可以被找到。PyPI是Python社区中最主要的软件仓库,...

    sleep-stage-identification-master_故障诊断_ELM.zip

    标题中的“sleep-stage-identification-master”暗示了这是一个关于睡眠阶段识别的项目,而“故障诊断_ELM”可能指的是使用 Extreme Learning Machine(ELM,极简学习机)进行故障诊断的技术。ELM是一种高效的机器...

    Python库 | big_sleep-0.4.7-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:big_sleep-0.4.7-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | big_sleep-0.0.1-py3-none-any.whl

    资源来自pypi官网。 资源全名:big_sleep-0.0.1-py3-none-any.whl

    TC10 Wake-up and Sleep Specification for Automotive Ethernet_11-2017.pdf

    《TC10 Wake-up and Sleep Specification for Automotive Ethernet》是针对汽车以太网的睡眠唤醒规范,由OPEN Alliance发布,旨在规范车载以太网系统在节能和高效操作中的睡眠模式和唤醒机制。该文档的主要作者包括...

    NoSleep-1.4.0.dmg mac不断网

    【标题】"NoSleep-1.4.0.dmg mac不断网" 描述了一款针对Mac用户的实用软件,名为"NoSleep",版本1.4.0。这款软件的主要功能是防止Mac在合上屏幕后自动进入休眠模式,从而保持网络连接的持续性。 在Mac操作系统中,...

    Python库 | big-sleep-0.2.7.tar.gz

    "big-sleep-0.2.7.tar.gz" 是一个针对Python编程语言的库资源,其版本号为0.2.7,以tar.gz格式压缩。这种格式是Linux和Unix系统中常见的归档和压缩方法,它将多个文件打包成一个单一的文件,并通过gzip工具进行压缩...

    NoSleep-移动端H5页面永不休眠插件

    标题中的"NoSleep"是一个专为移动端H5页面设计的插件,它的主要功能是防止设备在用户浏览网页时自动进入休眠模式。这意味着用户在观看H5内容时,无论是Android还是iOS系统的手机,都能保持屏幕常亮,不会因为设备的...

    NoSleep.js-master.zip

    NoSleep.js是一个JavaScript库,它允许开发者在网页上实现一个防止设备自动休眠或屏幕熄灭的功能,这对于那些需要持续显示或者需要用户长时间交互的应用场景非常有用。 【描述】中提到,NoSleep.js库提供了一个名为...

    Sleep Timer-crx插件

    "Sleep Timer-crx插件"是一款专为浏览器设计的实用扩展程序,主要功能是在设定的时间后自动关闭或静音用户正在浏览的特定选项卡。这款插件特别适用于那些需要定时结束播放音乐、视频或者在线学习资源的情况,以避免...

    T03-Sleep-Yield-Join.java

    T03_Sleep_Yield_Join.java

    sleep-stage-identification-master_故障诊断_ELM_源码.zip

    标题中的“sleep-stage-identification-master”表明这是一个关于睡眠阶段识别的项目,可能是一个研究或应用系统。"故障诊断"提示这个项目可能包含了对系统运行异常的检测和处理机制。ELM,全称Extreme Learning ...

    GD32F4-PMU-Sleep-Wakeup.rar

    GD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep_WakeupGD32F4_PMU_Sleep...

    big-sleep:AI生成的图像和电影的定制大睡眠

    $ pip install big-sleep 用法 $ dream " a pyramid made of ice " 图像将保存到调用命令的任何位置 先进的 您可以使用以下代码在代码中调用它 from big_sleep import Imagine dream = Imagine ( text = "fire

    Sleep Timer-开源

    【标题】"Sleep Timer-开源" 是一个专为计算机设定定时关机功能的开源软件。在IT领域,开源软件指的是其源代码对公众开放,允许用户自由查看、使用、修改和分发。这样的软件通常由全球各地的开发者社区共同维护和...

Global site tag (gtag.js) - Google Analytics