请教,用JAVA画波形图

yanglei02152003 2008-07-17 10:10:05
最近由于项目的需要,要求利用JAVA的AWT或者SWING组件,开发APPLET程序,用网页的形式显示出来。但是,现成的波形显示控件并没有,需要自己开发。目前,遇到的困难是怎样编写显示坐标和波形图的代码,请各位大虾指点一二!最好能给出源码!万分感谢!!!
由于小女子能力有限,请大家多多帮忙!!这厢有礼了!

...全文
1761 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
大_A 2012-09-20
  • 打赏
  • 举报
回复
最近在做波形图,真的很头大,是接收串口数据然后显示波形图,
遇到大数据问题就JAVA的画图就会死掉,楼主有什么好的解决办法没有
softjet 2008-07-22
  • 打赏
  • 举报
回复
关注中
chenweionline 2008-07-22
  • 打赏
  • 举报
回复
3个点就可以确定一段弧线了啊,不用绘所有的点
yanglei02152003 2008-07-21
  • 打赏
  • 举报
回复
偶现在已经用Graphics类画出了坐标,因为要根据多个点描绘图形,界面有限不能显示那么多的点.需要采用一种算法抽样画点.
这个算法我还没有想出来,请各位大虾出谋划策,帮忙给个建议!
谢谢了!

pzy123cn 2008-07-20
  • 打赏
  • 举报
回复
这个是我以前的一个作业,可能对你有用
http://i.cn.yahoo.com/pzy123cn/blog/p_17/
nj_dobetter 2008-07-18
  • 打赏
  • 举报
回复
自己用Java2D Graphics绘制
our651 2008-07-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hsxygl 的回复:]
//这是一个Applet程序,画一个正弦曲线并用JSlider控制它的振幅:
//绘图
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

class SineDraw extends JPanel
{
private static final int SCALEFACTOR=200;
private int cycles;
private int points;
private double sines[];
private int pts[];
public SineDraw(){setCycles(5);}
public void setCycles(int newCycles)
{
cycles=newCycles…
[/Quote]
老板厚道,thinking in java
woodqlin 2008-07-17
  • 打赏
  • 举报
回复
图表我经常做,是基于web,但是不会用swing,帮不了你
craky 2008-07-17
  • 打赏
  • 举报
回复
下载个jfreechat用
Efence 2008-07-17
  • 打赏
  • 举报
回复
//这是一个Applet程序,画一个正弦曲线并用JSlider控制它的振幅:
//绘图
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

class SineDraw extends JPanel
{
private static final int SCALEFACTOR=200;
private int cycles;
private int points;
private double sines[];
private int pts[];
public SineDraw(){setCycles(5);}
public void setCycles(int newCycles)
{
cycles=newCycles;
points=SCALEFACTOR*cycles*2;
sines=new double[points];
for(int i=0;i<points;i++)
{
double radians=(Math.PI/SCALEFACTOR)*i;
sines[i]=Math.sin(radians);
}
repaint();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int maxWidth=getWidth();
double hstep=(double)maxWidth/(double)points;
int maxHeight=getHeight();
pts=new int[points];
for(int i=0;i<points;i++)
pts[i]=(int)(sines[i]+maxHeight/2*0.95+maxHeight/2);
g.setColor(Color.RED);
for(int i=1;i<points;i++)
{
int x1=(int)((i-1)*hstep);
int x2=(int)(i*hstep);
int y1=pts[i-1];
int y2=pts[i];
g.drawLine(x1,y1,x2,y2);
}
}
}
public class SineWave extends JApplet
{
private SineDraw sines=new SineDraw();
private JSlider adjustCycles=new JSlider(1,30,5);
public void init()
{
Container cp=getContentPane();
cp.add(sines);
adjustCycles.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent e)
{
sines.setCycles(((JSlider)e.getSource()).getValue());
}
});
cp.add(BorderLayout.SOUTH,adjustCycles);
}
public static void main(String args[])
{
new SineWave();
}
}

其它的波形大同小异,查一下波形函数即可,自己看下吧
chenweionline 2008-07-17
  • 打赏
  • 举报
回复
你如果需要自己实现的话,那么Java 2D API提供了非常强大的支持。
你只需要学习GUI组件绘制的基本知识,Graphics类以及java.awt.geom开发包里的内容就可以完成你的需求。
yanglei02152003 2008-07-17
  • 打赏
  • 举报
回复
偶画的是一般的波形图,比如,正弦或者余弦,方波,锯齿波等等。
现在主要是不知道坐标怎么画,还有点数的问题,如果画1000多个点,是要一个一个点画,还是抽样显示呢?
请教各位大虾!
南京创业者 2008-07-17
  • 打赏
  • 举报
回复
被标题与LZ性别吸引过来...
需要正能量 2008-07-17
  • 打赏
  • 举报
回复
你指的波形图是的表现方式是怎样的?折线还是曲线?
折线的话比较简单,使用GeneralPath对象连接数据点就行.
如果是曲线的话,使用QuadCurve2D对象根据你实际的要求,操作回绕或点即可.
assdust110 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 craky 的回复:]
下载个jfreechat用
[/Quote]

如果不行的话,就一个一个点的连吧。。。

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧