⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputdefaultdata.java

📁 切比雪夫滤波器设计,JAVA编写,VJ编译
💻 JAVA
字号:
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;

public class inputdefaultdata extends Form{
public inputdefaultdata(){
	initForm();
	this.datalist.setSelectedIndex(0);
	
}

//定义变量
public int max;//最多允许输入的点数
public double data[];//存放定义后的数据;注意:从序号为1的位置开始定义
public int period=64;//一个周期的点数
public float periodnum=2;//输入多少个周期

private void edit1_textChanged(Object source, Event e)
//输入周期点数时不允许输入非法字符(只能是整数),同时更新显示总的点数	
{
	try{
		period=Math.abs(Integer.parseInt(edit1.getText()));
		periodnum=Math.abs(Float.valueOf(edit2.getText()).floatValue());
		this.showtotalnum.setText(String.valueOf((int)(period*periodnum)));	
		this.yesButton.setEnabled(true);
		if((int)(period*periodnum)<2)this.yesButton.setEnabled(false);
		if((int)(period*periodnum)>max){
			MessageBox.show("你输入的数据太大!最多只允许输入"+max+"个数据点。","警告!",MessageBox.OK+MessageBox.ICONWARNING);
			this.edit1.setText(String.valueOf((int)(max/periodnum)));
			period=Integer.parseInt(edit1.getText());
		}
	}catch(NumberFormatException ee){
		//if(edit1.getText().equals(null)==false)
		this.yesButton.setEnabled(false);
		this.showtotalnum.setText("???");
		//MessageBox.show("你输入了非法字符,请检查后重新输入!\n注意:周期点数只能输入整数,周期数只能输入浮点数。","警告!",MessageBox.OK+MessageBox.ICONWARNING);
	}
}

private void edit2_textChanged(Object source, Event e)
{
	try{
		period=Math.abs(Integer.parseInt(edit1.getText()));
		periodnum=Math.abs(Float.valueOf(edit2.getText()).floatValue());
		this.showtotalnum.setText(String.valueOf((int)(period*periodnum)));
		this.yesButton.setEnabled(true);
		if((int)(period*periodnum)<2)this.yesButton.setEnabled(false);
		if((int)(period*periodnum)>max){
			MessageBox.show("你输入的数据太大!最多只允许输入"+max+"个数据点。","警告!",MessageBox.OK+MessageBox.ICONWARNING);
			this.edit2.setText(String.valueOf(max/period));
			periodnum=Float.valueOf(edit2.getText()).floatValue();
		}
		
	}catch(NumberFormatException ee){
		//if(edit2.getText().equals(null)==false)
		this.yesButton.setEnabled(false);
		this.showtotalnum.setText("???");
		//MessageBox.show("你输入了非法字符,请检查后重新输入!\n注意:周期点数只能输入整数,周期数只能输入浮点数。","警告!",MessageBox.OK+MessageBox.ICONWARNING);
	}
}

private void yesButton_click(Object source, Event e)//点击确认按钮后初始化数据
{
//System.out.println("dgfipnsapgseg");
	
//数据初始化(参数:波形种类,序列点数,周期点数)//输入波形数据初始化//wavetype=0:正弦波//wavetype=1:余弦波//wavetype=2:正弦周期全波//wavetype=3:余弦周期全波//wavetype=4:正弦周期半波//wavetype=5:余弦周期半波//wavetype=6:指数衰减正弦波//wavetype=7:指数衰减余弦波//wavetype=8:矩形波//wavetype=9:方波//wavetype=10:三角波//wavetype=11:三角波(无直流)//wavetype=12:锯齿波//wavetype=13:锯齿波(无直流)//wavetype=14:阶跃信号//wavetype=15:单位冲击信号int i;data=new double[(int)(period*periodnum)+1];int num=(int)(period*periodnum);double emptyrate=0.01*this.trackBar.getValue();
switch(datalist.getSelectedIndex()){
case 0://正弦波    for(i=1;i<=num;i++) data[i]=Math.sin(2*Math.PI*((i-1)%period)/period);		break;case 1://余弦波
	for(i=1;i<=num;i++) data[i]=Math.cos(2*Math.PI*((i-1)%period)/period);	break;case 2://正弦周期全波
	for(i=1;i<=num;i++) data[i]=Math.sin(Math.PI*((i-1)%period)/period);	break;
case 3://余弦周期全波
	for(i=1;i<=num;i++) data[i]=Math.abs(Math.cos(Math.PI*((i-1)%period)/period));	break;case 4://正弦周期半波
	for(i=1;i<=num;i++){      if((i-1)%period<=period/2) data[i]=Math.sin(2*Math.PI*((i-1)%period)/period);	  else data[i]=0;}	break;case 5://余弦周期半波
    for(i=1;i<=num;i++){      if((i-1)%period<=period/4||(i-1)%period>=3*period/4) data[i]=Math.cos(2*Math.PI*((i-1)%period)/period);	  else data[i]=0;}		break;case 6://指数衰减正弦波
    for(i=1;i<=num;i++) data[i]=Math.exp(-0.05*(i-1))*Math.sin(2*Math.PI*((i-1)%period)/period);	break;case 7://指数衰减余弦波
	for(i=1;i<=num;i++) data[i]=Math.exp(-0.05*(i-1))*Math.cos(2*Math.PI*((i-1)%period)/period);	break;case 8://矩形波
    for(i=1;i<=num;i++){       if((i-1)%period<=(int)(emptyrate*period)) data[i]=1;      else data[i]=0;}		break;case 9://方波
	for(i=1;i<=num;i++){       if((i-1)%period<(int)(emptyrate*period)) data[i]=1;      else data[i]=-1;}	break;case 10://三角波
    for(i=1;i<=num;i++){       if((i-1)%period<=period/2) data[i]=((i-1)%period)/(double)(period/2);      else data[i]=(period-(i-1)%period)/(double)(period/2); }		break;case 11://三角波(无直流)
    for(i=1;i<=num;i++){       if((i-1)%period<=period/2) data[i]=2*((i-1)%period)/(double)(period/2)-1;      else  data[i]=2*(period-(i-1)%period)/(double)(period/2)-1;}		break;case 12://锯齿波
    for(i=1;i<=num;i++) data[i]=((i-1)%period)/(double)(period);	break;case 13://锯齿波(无直流)
    for(i=1;i<=num;i++) data[i]=2*((i-1)%period)/(double)(period)-1;		break;case 14://阶跃信号
    for(i=1;i<=num;i++) data[i]=1;	break;case 15://单位冲击信号
    for(i=1;i<=num;i++){		if(i==1)data[i]=1;
	    else data[i]=0;}		break;
}//datainit() over!!
}

private void trackBar_valueChanged(Object source, Event e)
{
	label5.setText(String.valueOf((float)(0.01*this.trackBar.getValue())));
}

private void datalist_selectedIndexChanged(Object source, Event e)//选择波形
{
	if(datalist.getSelectedIndex()==8||datalist.getSelectedIndex()==9){
		this.label4.setEnabled(true);
		this.label5.setEnabled(true);
		this.trackBar.setEnabled(true);
	}
	else {
		this.label4.setEnabled(false);
		this.label5.setEnabled(false);
		this.trackBar.setEnabled(false);}
}

Container components = new Container();
Button yesButton = new Button();
Button cancelButton = new Button();
GroupBox groupBox1 = new GroupBox();
ListBox datalist = new ListBox();
GroupBox groupBox2 = new GroupBox();
Label label1 = new Label();
Label label2 = new Label();
Edit edit1 = new Edit();
Edit edit2 = new Edit();
Label label3 = new Label();
Label showtotalnum = new Label();
Label label4 = new Label();
TrackBar trackBar = new TrackBar();
Label label5 = new Label();

private void initForm()
{
	// NOTE:  This form is storing resource information in an
	// external file.  Do not modify the string parameter to any
	// resources.getObject() function call. For example, do not
	// modify "foo1_location" in the following line of code
	// even if the name of the Foo object changes: 
	//   foo1.setLocation((Point)resources.getObject("foo1_location"));

	IResourceManager resources = new ResourceManager(this, "inputdefaultdata");
	yesButton.setLocation(new Point(40, 208));
	yesButton.setSize(new Point(80, 24));
	yesButton.setTabIndex(0);
	yesButton.setText("确定");
	yesButton.setDialogResult(DialogResult.YES);
	yesButton.addOnClick(new EventHandler(this.yesButton_click));

	cancelButton.setLocation(new Point(272, 208));
	cancelButton.setSize(new Point(80, 24));
	cancelButton.setTabIndex(1);
	cancelButton.setText("取消");
	cancelButton.setDialogResult(DialogResult.CANCEL);

	this.setText("输入典型序列");
	this.setAutoScaleBaseSize(new Point(6, 12));
	this.setBorderStyle(FormBorderStyle.FIXED_DIALOG);
	this.setCancelButton(cancelButton);
	this.setClientSize(new Point(391, 238));
	this.setIcon((Icon)resources.getObject("this_icon"));
	this.setMaximizeBox(false);
	this.setMinimizeBox(false);
	this.setStartPosition(FormStartPosition.CENTER_SCREEN);

	groupBox1.setLocation(new Point(8, 16));
	groupBox1.setSize(new Point(168, 176));
	groupBox1.setTabIndex(2);
	groupBox1.setTabStop(false);
	groupBox1.setText("请你选择输入序列");

	datalist.setLocation(new Point(16, 24));
	datalist.setSize(new Point(136, 136));
	datalist.setTabIndex(0);
	datalist.setText("listBox1");
	datalist.setUseTabStops(true);
	datalist.setItems(new Object[] {
					  "正弦波", 
					  "余弦波", 
					  "正弦周期全波", 
					  "余弦周期全波", 
					  "正弦周期半波", 
					  "余弦周期半波", 
					  "指数衰减正弦波", 
					  "指数衰减余弦波", 
					  "矩形波", 
					  "方波", 
					  "三角波", 
					  "三角波(无直流)", 
					  "锯齿波", 
					  "锯齿波(无直流)", 
					  "阶跃信号", 
					  "单位冲击信号"});
	datalist.addOnSelectedIndexChanged(new EventHandler(this.datalist_selectedIndexChanged));

	groupBox2.setLocation(new Point(184, 16));
	groupBox2.setSize(new Point(200, 176));
	groupBox2.setTabIndex(3);
	groupBox2.setTabStop(false);
	groupBox2.setText("设置");

	label1.setLocation(new Point(8, 24));
	label1.setSize(new Point(96, 16));
	label1.setTabIndex(0);
	label1.setTabStop(false);
	label1.setText("一个周期的点数");

	label2.setLocation(new Point(8, 56));
	label2.setSize(new Point(72, 16));
	label2.setTabIndex(1);
	label2.setTabStop(false);
	label2.setText("输入周期数");

	edit1.setLocation(new Point(112, 16));
	edit1.setSize(new Point(64, 19));
	edit1.setTabIndex(2);
	edit1.setText("64");
	edit1.addOnTextChanged(new EventHandler(this.edit1_textChanged));

	edit2.setLocation(new Point(112, 48));
	edit2.setSize(new Point(64, 19));
	edit2.setTabIndex(3);
	edit2.setText("2");
	edit2.addOnTextChanged(new EventHandler(this.edit2_textChanged));

	label3.setLocation(new Point(8, 152));
	label3.setSize(new Point(104, 16));
	label3.setTabIndex(4);
	label3.setTabStop(false);
	label3.setText("输入序列总点数:");

	showtotalnum.setLocation(new Point(128, 152));
	showtotalnum.setSize(new Point(48, 16));
	showtotalnum.setTabIndex(5);
	showtotalnum.setTabStop(false);
	showtotalnum.setText("128");

	label4.setEnabled(false);
	label4.setLocation(new Point(8, 104));
	label4.setSize(new Point(48, 16));
	label4.setTabIndex(6);
	label4.setTabStop(false);
	label4.setText("占空比");

	trackBar.setEnabled(false);
	trackBar.setLocation(new Point(56, 96));
	trackBar.setSize(new Point(96, 42));
	trackBar.setTabIndex(7);
	trackBar.setText("trackBar1");
	trackBar.setAutoSize(false);
	trackBar.setMaximum(100);
	trackBar.setValue(50);
	trackBar.setTickFrequency(10);
	trackBar.addOnValueChanged(new EventHandler(this.trackBar_valueChanged));

	label5.setEnabled(false);
	label5.setLocation(new Point(160, 104));
	label5.setSize(new Point(32, 16));
	label5.setTabIndex(8);
	label5.setTabStop(false);
	label5.setText("0.5");

	this.setNewControls(new Control[] {
						groupBox2, 
						groupBox1, 
						cancelButton, 
						yesButton});
	groupBox1.setNewControls(new Control[] {
							 datalist});
	groupBox2.setNewControls(new Control[] {
							 label5, 
							 trackBar, 
							 label4, 
							 showtotalnum, 
							 label3, 
							 edit2, 
							 edit1, 
							 label2, 
							 label1});
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -