如下程序,怎么用多线程实现示波器,是用几个线程交替\重画吗?

aaassd 2003-12-04 09:33:50
如下程序,怎么用多线程实现示波器,是用几个线程交替\重画吗?
那怎么刷新画板?
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

class SineDraw extends JPanel{
static final int SCALEFACTOR = 20;
int cycles;
int points;
double[] sines;
int[] pts;
SineDraw(){setCycles(5);}
public void setCycles(int newCycles){
cycles = newCycles;
points = SCALEFACTOR*cycles*2;
sines = new double[points];
pts = new int[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();
for(int i = 0;i<points;i++)
pts[i] = (int)(sines[i]*maxHeight/2* .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);
}
}
}
class SineWave extends JApplet{
SineDraw sines = new SineDraw();
JSlider cycles = new JSlider(1,30,5);
public void init(){
Container cp = getContentPane();
cp.add(sines);
cycles.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
sines.setCycles(((JSlider)e.getSource()).getValue());
}
});
cp.add(BorderLayout.SOUTH,cycles);
}
}

class MainMothed{
public static void setupClosing(JFrame frame){
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}


public static void main(String[] args) {
JFrame frame=new JFrame("sinewave");
setupClosing(frame);
SineWave sw=new SineWave();
frame.getContentPane().add(sw);
sw.init();
frame.setSize(700,400);
frame.setVisible(true);

}

}
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaassd 2003-12-05
  • 打赏
  • 举报
回复
换一个问题吧,模仿QQ的.
在处理两个客户端通信,服务器我这个客户信息是发给谁的,用用户名识别吗?
谁有类似的程序帮帮忙,分不是问题.(我是初学还不到一个月)
一大梨 2003-12-04
  • 打赏
  • 举报
回复
……
salx 2003-12-04
  • 打赏
  • 举报
回复
支持一下,我看了一下效果真不错。也希望能看到多个波的显示。
RomaticStone 2003-12-04
  • 打赏
  • 举报
回复
i think this is up to the problem you want to solve, best performance of drawing or minimizing resource consumption?

if you've got the definite answer, pls speficfy.
tomcatjava 2003-12-04
  • 打赏
  • 举报
回复
建议研究一下JFreeChart开源包!!
aaassd 2003-12-04
  • 打赏
  • 举报
回复
自己UP一下吧.我是初学的,求个思路.

62,614

社区成员

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

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