甘肃政法学院
本科学生实验报告
(三)
姓名刘倚帆学院计算机科学学院
专业计算机科学与技术班级12级专升本班实验课程名称Java 程序设计
试验时间2012 年10 月23 日指导教师及职称李瑞生
实验成绩
开课时间2012—2013 学年第一学期
甘肃政法学院实验管理中心印制
四、实验内容与步骤:
组件与事件处理(1)
1、算术测试:请读懂下面模板程序,将其补充完整并调试运行。Teacher.java
package实验3_1_1;
public class Teacher
{ int numberOne,numberTwo;
String operator="";
boolean right;
public int giveNumberOne(int n)
{ numberOne=(int)(Math.random()*n)+1;
return numberOne;
}
public int giveNumberTwo(int n)
{ numberTwo=(int)(Math.random()*n)+1;
return numberTwo;
}
public String giveOperator()
{ double d=Math.random();
if(d>=0.5)
operator="+";
else
operator="-";
return operator;
}
public boolean getRight(int answer)
{ if(operator.equals("+"))
{ if(answer==numberOne+numberTwo)
right=true;
else
right=false;
}
else if(operator.equals("-"))
{ if(answer==numberOne-numberTwo)
right=true;
else
right=false;
}
return right;
}
}
ComputerFrame.java
package实验3_1_1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class ComputerFrame extends Frame implements ActionListener
{ JTextField textOne;
JTextField textTwo;
JTextField textResult;
Button getProblem,giveAnwser;
Label operatorLabel,message;
Teacher teacher;
ComputerFrame(String s)
{ super(s);
teacher=new Teacher();
setLayout(new FlowLayout());
textOne=new JTextField(10); //创建textOne,其可见字符长是10
textTwo=new JTextField(10); //创建textTwo,其可见字符长是10
textResult=new JTextField(10); //创建textResult,其可见字符长是10
operatorLabel=new Label("+");
message=new Label("你还没有回答呢");
getProblem=new Button("获取题目");
giveAnwser=new Button("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(new Label("="));
add(textResult);
add(giveAnwser);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.addActionListener(this); //将当前窗口注册为getProblem的ActionEvent事件监视器giveAnwser.addActionListener(this); //将当前窗口注册为giveAnwser的ActionEvent事件监视器textResult.addActionListener(this); //将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource() == getProblem) //判断事件源是否是getProblem { int number1=teacher.giveNumberOne(100);
int number2=teacher.giveNumberTwo(100);
String operator=teacher.giveOperator();
textOne.setText(""+number1);
textTwo.setText(""+number2);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
if(e.getSource() == giveAnwser) //判断事件源是否是giveAnwser { String answer=textResult.getText();
try{
int result=Integer.parseInt(answer);
if(teacher.getRight(result)==true)
{ message.setText("你回答正确");
}
else
{ message.setText("你回答错误");
}
}
catch(NumberFormatException ex)
{ message.setText("请输入数字字符");
}
}
textResult.requestFocus();
validate();
}
}
MainClass.java
package实验3_1_1;
public class MainClass
{ @SuppressWarnings("unused")
public static void main(String args[])
{ ComputerFrame frame;
frame=new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试
}
}
运行结果:
2、信号灯:请读懂下面模板程序,将其补充完整并调试运行。SignalCanvas.java
package实验3_1_2;
import java.awt.*;
@SuppressWarnings("serial")
public class SignalCanvas extends Canvas
{ int red,green,yellow,x,y,r;
SignalCanvas()
{ setBackground(Color.white);
}
public void setRed(int r)
{ red=r;
}
public void setGreen(int g)
{ green=g;
}
public void setYellow(int y)
{ yellow=y;
}
public void setPosition(int x,int y)
{ this.x=x;
this.y=y;
}
public void setRadius(int r)
{ this.r=r;
}
public void paint(Graphics g)
{ if(red==1)
{ g.setColor(Color.red);
}
else if(green==1)
{ g.setColor(Color.green);
}
else if(yellow==1)
{ g.setColor(Color.yellow);
}
g.fillOval(x,y,2*r,2*r);
}
}
SignalFrame.java
package实验3_1_2;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
@SuppressWarnings({ "serial", "unused" })
public class SignalFrame extends Frame implements ItemListener
{ Choice choice;
SignalCanvas signal=null;
String itemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";
@SuppressWarnings("rawtypes")
public SignalFrame()
{ choice=new Choice(); //创建choice
choice.add(itemRed); //创建choice添加itemRed
choice.add(itemYellow); //创建choice添加itemYellow
choice.add(itemGreen); //创建choice添加itemGreen
choice.addItemListener(this); //将当前窗口注册为choice的ItemEvent事件监视器 add(choice,BorderLayout.NORTH);
try{ Class cs=Class.forName("SignalCanvas");
signal=(SignalCanvas)cs.newInstance();
add(signal,BorderLayout.CENTER);
}
catch(Exception e)
{ add(new Label("您还没有编写SignalCanvas类"),BorderLayout.CENTER); }
setBounds(100,100,360,300);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void itemStateChanged(ItemEvent e)
{ String item= choice.getSelectedItem(); //choice返回被选中的条目int w=signal.getBounds().width;
int h=signal.getBounds().height;
int m=Math.min(w,h);
signal.setRadius(m/6);
if(item.equals(itemRed))
{ if(signal!=null)
{ signal.setRed(1);
signal.setYellow(0);
signal.setGreen(0);
signal.setPosition(w/3,0);
signal.repaint();
}
}
else if(item.equals(itemYellow))
{ if(signal!=null)
{ signal.setRed(0);
signal.setYellow(1);
signal.setGreen(0);
signal.setPosition(w/3,h/3);
signal.repaint();
}
}
else if(item.equals(itemGreen))
{ if(signal!=null)
{ signal.setRed(0);
signal.setYellow(0);
signal.setGreen(1);
signal.setPosition(w/3,2*h/3);
signal.repaint();
}
}
}
}
SignalMainClass.java
package实验3_1_2;
public class SignalMainClass
{ public static void main(String args[])
{ SignalFrame frame;
frame=new SignalFrame() ;
frame.setTitle("信号灯");
}
}
运行结果:
3、布局与日历:请读懂下面模板程序,将其补充完整并调试运行。CalendarBean.java
package实验3_1_3;
import java.util.Calendar;
public class CalendarBean
{
String day[];
int year=2005,month=0;
public void setYear(int year)
{ this.year=year;
}
public int getYear()
{ return year;
}
public void setMonth(int month)
{ this.month=month;
}
public int getMonth()
{ return month;
}
public String[] getCalendar()
{ String a[]=new String[42];
Calendar 日历=Calendar.getInstance();
日历.set(year,month-1,1);
int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;
int day=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { day=31;
}
if(month==4||month==6||month==9||month==11)
{ day=30;
}
if(month==2)
{ if(((year%4==0)&&(year%100!=0))||(year%400==0))
{ day=29;
}
else
{ day=28;
}
}
for(int i=星期几,n=1;i<星期几+day;i++)
{
a[i]=String.valueOf(n) ;
n++;
}
return a;
}
}
CalendarFrame.java
package实验3_1_3;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
@SuppressWarnings({ "serial", "unused" })
public class CalendarFrame extends Frame implements ActionListener
{ Label labelDay[]=new Label[42];
Button titleName[]=new Button[7];
String name[]={"日","一","二","三", "四","五","六"};
Button nextMonth,previousMonth;
int year=2012,month=10;
CalendarBean calendar;
Label showMessage=new Label("",Label.CENTER);
public CalendarFrame()
{ Panel pCenter=new Panel();
pCenter.setLayout(new GridLayout(7,7));
//将pCenter的布局设置为7行7列的GridLayout 布局for(int i=0;i<7;i++)
{ titleName[i]=new Button(name[i]);
pCenter.add(titleName[i]); //pCenter添加组件titleName[i]
}
for(int i=0;i<42;i++)
{
labelDay[i]=new Label("",Label.CENTER);
pCenter.add(labelDay[i]); //pCenter添加组件labelDay[i]
}
calendar=new CalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
nextMonth=new Button("下月");
previousMonth=new Button("上月");
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
Panel pNorth=new Panel(),
pSouth=new Panel();
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(showMessage);
showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" ); ScrollPane scrollPane=new ScrollPane();
scrollPane.add(pCenter);
add(scrollPane,BorderLayout.CENTER); //窗口添加scrollPane在中心区域
add(scrollPane,BorderLayout.CENTER); //窗口添加pNorth 在北面区域
add(pSouth,BorderLayout.SOUTH); //窗口添加pSouth 在南区域
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==nextMonth)
{ month=month+1;
if(month>12)
month=1;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}
else if(e.getSource()==previousMonth)
{ month=month-1;
if(month<1)
month=12;
calendar.setMonth(month);
String day[]=calendar.getCalendar();
for(int i=0;i<42;i++)
{ labelDay[i].setText(day[i]);
}
}
showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" ); }
}
CalendarMainClass.java
package实验3_1_3;
public class CalendarMainClass
{ public static void main(String args[])
{ CalendarFrame frame=new CalendarFrame();
frame.setBounds(100,100,360,300);
frame.setVisible(true);
frame.validate();
frame.addWindowListener(new java.awt.event.WindowAdapter()
{ public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0);
}
}
);
}
}
运行结果:
组件与事件编程(2)
1、方程求根:请读懂下面模板程序,将其补充完整并调试运行。
SquareEquation.java
package实验3_2;
public class SquareEquation
{ double a,b,c;
double root1,root2;
public void setA(double a)
{ this.a=a;
}
public void setB(double b)
{ this.b=b;
}
public void setC(double c)
{ this.c=c;
}
public double getRootOne() throws NoRealRootException,NoSquareEquationException { if(a!=0)
{ double disk=b*b-4*a*c;
if(disk>=0)
{ root1=(-b+Math.sqrt(disk))/(2*a);
}
else
{ throw new NoRealRootException("没有实根");
}
}
else
{
throw new NoRealRootException("不是二次方程");
}
return root1;
}
public double getRootTwo() throws NoRealRootException,NoSquareEquationException { if(a!=0)
{ double disk=b*b-4*a*c;
if(disk>=0)
{ root2=(-b-Math.sqrt(disk))/(2*a);
}
else
{ throw new NoRealRootException("没有实根");
}
}
else
{
throw new NoRealRootException("不是二次方程");
}
return root2;
}
}
@SuppressWarnings("serial")
class NoRealRootException extends Exception
{ String message;
NoRealRootException(String s)
{ message=s;
}
public String getMessage()
{ return message;
}
}
@SuppressWarnings("serial")
class NoSquareEquationException extends Exception
{ String message;
NoSquareEquationException(String s)
{ message=s;
}
public String getMessage()
{ return message;
}
}
EquationFrame.java
package实验3_2;
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class EquationFrame extends Frame implements ActionListener
{ SquareEquation equation;
TextField textA,textB,textC;
TextArea showRoots;
Button controlButton;
public EquationFrame()
{ equation=new SquareEquation();
textA=new TextField(8);
textB=new TextField(8);
textC=new TextField(8);
showRoots=new TextArea();
controlButton=new Button("确定");
Panel pNorth=new Panel();
pNorth.add(new Label("二次项系数:"));
pNorth.add(textA);
pNorth.add(new Label("一次项系数:"));
pNorth.add(textB);
pNorth.add(new Label("常数项系数:"));
pNorth.add(textC);
pNorth.add(controlButton);
controlButton.addActionListener(this);
//当前窗口作为controlButton的ActionEvent事件的监视器 add(pNorth,BorderLayout.NORTH);
add(showRoots,BorderLayout.CENTER);
setBounds(100,100,630,160);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{ try{
double a=Double.parseDouble(textA.getText()); //textA调用方法获取其中的文本double b=Double.parseDouble(textB.getText()); //textB调用方法获取其中的文本
double c=Double.parseDouble(textC.getText()); //textC调用方法获取其中的文本equation.setA(a);
equation.setB(b);
equation.setC(c);
textA.setText(""+a);
textB.setText(""+b);
textC.setText(""+c);
showRoots.append("\n 根:"+equation.getRootOne());
showRoots.append(" 根:"+equation.getRootTwo()); }
catch(Exception ex)
{ showRoots.append("\n"+ex+"\n");
}
}
}
EquationMainClass.java
package实验3_2;
public class EquationMainClass
{ @SuppressWarnings("unused")
public static void main(String args[])
{ EquationFrame frame=new EquationFrame();
}
}
运行结果:
2、字体对话框:请读懂下面模板代码,将其补充完整并调试运行。FontFamilyNames.java
package实验3_2_2;
import java.awt.GraphicsEnvironment;
public class FontFamilyNames
{ String fontName[];
public String [] getFontName()
{ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
fontName=ge.getAvailableFontFamilyNames();
return fontName;
}
}
FontDialog.java
package实验3_2_2;
import java.awt.event.*;
import java.awt.*;
import javax.swing.JLabel;
public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames;
int fontSize=38;
String fontName;
Choice fontNameList;
JLabel label;
Font font;
Button yes,cancel;
static int YES=1,NO=0;
int state=-1;
FontDialog(Frame f)
{ super(f);
fontFamilyNames=new FontFamilyNames();
setModal(true); //对话框设置为有模式yes=new Button("Yes");
cancel=new Button("cancel");
yes.addActionListener(this);
cancel.addActionListener(this);
label=new JLabel("hello,奥运",JLabel.CENTER);
fontNameList=new Choice();
String name[]=fontFamilyNames.getFontName();
for(int k=0;k { fontNameList.add(name[k]); } fontNameList.addItemListener(this); add(fontNameList,BorderLayout.NORTH); add(label,BorderLayout.CENTER); Panel pSouth=new Panel(); pSouth.add(yes); pSouth.add(cancel); add(pSouth,BorderLayout.SOUTH); setBounds(100,100,280,170); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { state=NO; setVisible(false); } } ); validate(); } public void itemStateChanged(ItemEvent e) { fontName=(String)fontNameList.getSelectedItem(); font=new Font(fontName,Font.BOLD,fontSize); label.setFont(font); label.repaint(); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==yes) { state=YES; setVisible(false); //对话框设置为不可见 } else if(e.getSource()==cancel) { state=NO; setVisible(false); //对话框设置为不可见 } } public int getState() { return state; } public Font getFont() { return font; } } FrameHaveDialog.java package实验3_2_2; import java.awt.event.*; import java.awt.*; import javax.swing.JTextArea; public class FrameHaveDialog extends Frame implements ActionListener { JTextArea text; Button buttonFont; FrameHaveDialog() { buttonFont=new Button("设置字体"); text=new JTextArea("Java 2实用教程(第三版)"); buttonFont.addActionListener(this); add(buttonFont,BorderLayout.NORTH); add(text); setBounds(60,60,300,300); setVisible(true); validate(); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); } public void actionPerformed(ActionEvent e) { if(e.getSource()==buttonFont) { FontDialog dialog=new FontDialog(this); //创建对话框 setVisible(true); //对话框设置为可见 dialog.setTitle("字体对话框"); //对话框设置设置标题为“字体对话框” if(dialog.getState()==FontDialog.YES) { text.setFont(dialog.getFont()); text.repaint(); } if(dialog.getState()==FontDialog.NO) { text.repaint(); } } } } FontDialogMainClass.java package实验3_2_2; public class FontDialogMainClass { public static void main(String args[]) { new FrameHaveDialog(); } } 运行结果: 3、英语单词拼写练习:请读懂下面模板代码,将其补充完整并调试运行。RondomString.java package实验3_2_3; public class RondomString { String str=""; public String getRondomString(String s) { StringBuffer strBuffer=new StringBuffer(s); int m=strBuffer.length(); for(int k=0;k 实验项目3 第2部分 组件与事件处理(2) [实验目的] 1、进一步掌握java组件及事件编程的各种方法。 2、掌握对话框的编制和事件处理方法。 3、掌握鼠标焦点事件、鼠标事件及键盘事件的处理方法。 4、掌握Swing组件及事件编程方法。 [实验要求] 1、复习理论教学中所学的内容。 2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。 3、认真总结实验并书写实验报告。 [实验课时] 2学时 [实验教学方式] 学生上机实验,教师随堂指导。 [实验内容] 1、字体对话框:请读懂下面模板代码,将其补充完整并调试运行。 //FontFamilyNames.java import java.awt.GraphicsEnvironment; public class FontFamilyNames { String fontName[]; public String [] getFontName() { GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontName=ge.getAvailableFontFamilyNames(); return fontName; } } //FontDialog.java import java.awt.event.*; import java.awt.*; import javax.swing.JLabel; public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames; int fontSize=38; String fontName; Choice fontNameList; JLabel label; 给排水工程常用材料及配件 (1)管材 给水排水、采暖工程常用管材种类很多。校制造材质分,可分为铸铁管、碳素钢管、有色 金属管和非金属管四种;按制造方法分,有入缝管和有缝管两种。 ①无缝钢管。通常使用在需要承受较大从力的管道广,一般给排水管道很少使用。无缝钢管的规格以外径乘以壁厚表示。如元缝钢管32×2.5、32×4.5,表示其外径都是32 mm,毕厚分别为2.5mm和4.5mm。ST代理商无缝钢管一般采用焊接和法兰连接,它的弯头有烃制 弯和压制弯两种,其作用相同。 ②有缝管。有缝管又称为焊接钢管,有镀钟钢管(白铁管)和非镀锌钢管(黑铁管)两种。镀锌钢管是在钢管的内外表回均涂上一层锌。可以防IL管道生锈腐蚀.并能延长其使用年限,常做主内给水管材。镀锌钢管和配件都是螺纹连接。黑铁管:一般用螺纹连接,但也可以 焊接。焊接钢管的连接配件有传箍、大小头、活接头、补心、外螺丝、弯头、异径三通四通、丝 堵等。非镀锌钢管规格如表5—3所示。 ③铸铁管。铸铁管是用灰n生铁浇铸顺风,只有抗腐蚀性较强、使用耐久、价格较低等优点,常用作埋人地下的给排水管道。 铸铁管按其用途和压力可分为结水铸铁管和诽水铸铁管,按共连接方式可分为承插式和法兰式管两种。铸铁管承插接口填料有育铅、石棉水泥、膨胀水泥等。 铸铁结水管的配件有异径管、=承三通、三承四通、双承三通、双盘三遁、双承弯头、单承 弯头、套简、短管等。 铸铁排水管的配件有=通、斜二迎、界径二通、弯头、大小头、四通、P宇弯、s弯、检查口 等,附件有清扫口、地漏等。 ④期料管。坯料管大部分是硬聚氯乙烯管,只有光滑、体轻、加工方便等优点,但有噪音 人、时间长易老化变质等缺点。其接口入式有焊接、承插连接和法兰连接等。它的零配件与铸铁下水管相向(坦材质为塑料)。 J a v a S w i n g中处理各组件事件的一般步骤 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN] Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。 4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。 以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import .*; import .*; public class Simple1 { private static JFrame frame;dd(myPanel); (); (true); } } 让我们来看看以上代码是如何工作的。在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。相应的变量Frame,button1,button2定义在程序的开头部分。 在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。当GUI 建立后,我们将面板添加到窗体并显示结果。当用户点击按钮时,程序调用actionPerformed方法,通过if语句来判断是哪一个按钮被点击,然后在对话框中显示相应的内容。 利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。 通过使用匿名内部类可以解决上述存在的问题。使用简单的匿名内部类作为addActionListener的变量即可。以下是实现代码: Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Simple1 { private static JFrame frame; // 定义为静态变量以便main使用 private static JPanel myPanel; // 该面板用来放置按钮组件 private JButton button1; // 这里定义按钮组件 private JButton button2; // 以便让ActionListener使用 public Simple1() // 构造器, 建立图形界面 { // 新建面板 myPanel = new JPanel(); // 新建按钮 button1 = new JButton("按钮1"); // 新建按钮1 button2 = new JButton("按钮2"); SimpleListener ourListener = new SimpleListener(); // 建立一个actionlistener让两个按钮共享 button1.addActionListener(ourListener); button2.addActionListener(ourListener); myPanel.add(button1); // 添加按钮到面板 myPanel.add(button2); } 常用电气元件功能介绍 一、保护、隔离元件 1、刀开关、倒顺开关 功能:用于不频繁分断电源主回路,形成明显的断点。没有带灭弧装置,不能带大电流操作,无保护功能;倒顺开关有换向的作用。 参数:额定电流、接线方式、操作方式等 常用型号:HD11-400/39、HS11-600/39 2、断路器 功能:用于线路保护,主要保护有:短路保护、过载保护等,也可在正常条件下用来非频繁地切断电路。 常用的断路器一般根据额定电流大小分为:框架式断路器(一般630A以上)、塑壳断路器(一般630A以下)、微型断路器(一般63A以下)。 参数:额定电流、框架电流、额定工作电压、分断能力等 常用型号:C65N D10A/3P、NSX250N、MET20F202 详见《断路器基础知识及常用断路器选型》 3、熔断器 功能:熔断器就是一种最简单的保护电器,在电路中主要起短路保护作用。 熔断器就功能上可分为普通熔断器(gG)与半导体熔断器(aR),半导体熔断器主要就是用于半导体电子器件的保护,一般动作时间较普通熔断器与断路器快,因此也经常称为快熔;普通熔断器一般只用于线路短路保护。 做线路保护用的熔断器一般只用在一些检测、控制回路中,大部分都被 断路器而取代。 参数: 常用型号:RT18-2A/32X、NGTC1-250A/690V 4、刀熔开关 功能:主要用于动力回路的短路保护,也可用于正常情况下非频繁的切断电路。 可替代断路器的部分功能,比断路器更经济。一般用于驱动器前端或总进线电源处做短路保护。 由熔断器与隔离开关延伸而来,也有叫做熔断器式隔离开关。 参数:框架电流、额定电流、额定电压 常用型号: 5、过电压保护器(浪涌保护器) 功能:用于线路的过电压保护,主要用于保护由于雷电等引起的感应电压的冲击,保护线路上的电子元器件。 可分为几个级别,电源进线回路保护的,也有控制回路保护的,应与避雷针等防雷器件配合使用。 参数: 常用型号: 6、热继电器 功能:用于控制对象(电机)的过载保护,常见于对多电机的保护。 当一台变频器驱动多台电机时,需要加热继电器做过载保护,防止其中某台电机因过载而烧坏。一般用于鼠笼或者变频电机,绕线式电机一般不采用热继电器来做过载保护,而用过流继电器。(绕线式电机一般过载能力较鼠笼 耐磨零件材料概述 材料表面强化处理 农机具耐磨零件材料 球磨机磨球材料 耐磨材料概述 高锰钢的耐磨性 典型耐磨零件用钢 耐磨件--犁壁 耐磨件--泥浆泵缸套 耐磨件--锤式粉碎机锤片 耐磨件--风扇磨煤机护勾、护 耐磨件--稻麦收割机光滑刃动刀 片 耐磨件--耙片 耐磨件--锄铲 耐磨件--稻麦收割机光滑刃定刀 甲 耐磨件--旋耕机刀片 耐磨件--甘蔗粉碎机切片 耐磨件--剪羊毛机刀片 耐磨件--切草机刀片 耐磨件--旋耕机齿轮 耐磨件--联合收割机链轮片 耐磨件--泥浆活塞杆 耐磨件--推土机铲运机铲刀 耐磨件--凿岩机 耐磨件--钻探机械钻具 耐磨件--犁铧 耐磨件--覆带板 国外工程机械耐磨件用钢及热处理 德国挖掘机斗齿 日本挖掘机斗齿 日本推土机、装载机、行走机构日本推土机、装载机、工作装置美国挖掘机斗齿 材料表面强化处理 材料表面强化处理是提高耐磨性的重要措施之一。除了常用的化学热处理(渗碳、渗硼等)和表面淬火方法外,还有表面冶金强化(表面熔化、表面合金化、表面涂层)、气相反应沉积、离子注入等方法都能提高零件表面的耐磨性和疲劳强度等性能。耐磨堆焊是以提高耐磨性为主要目的的堆焊工艺。耐磨堆焊材料也就成为一类重要的金属耐磨材料。常用的耐磨堆焊材料有铁基合金、钴合金、镍合金等。耐磨堆焊材料的范围很广泛的。应该在耐磨性、对环境的适应能力和可焊性等几方面综合考虑正确选用堆焊材料。 耐磨材料概述 用于制造耐磨零件的金属耐磨材料包括钢、复合钢材和铸铁等。高锰钢是历史悠久的耐磨材料,在恶劣工况条件下,不容易产生塑性失稳,而具有相当好的耐磨性;但它只有在冲击载荷及单位压力较大的磨料磨损条件下,产生加工硬化效应,才显示出较其他材料具有更优良的耐磨性。对于冲击载荷不太大的易磨损零部件,目前较广泛选用成本较低的非合金钢(碳素钢)或中高碳合金钢,并采取一定的工艺措施以提高其耐磨性。选用表面硬化钢或复合钢材制作的零部件,在耐磨、耐冲击等性能方面都具有明显的优点,可提高使用寿命,但成本较高。耐磨铸铁的耐磨性好,成本低,包括冷硬铸铁、白口铸铁和中锰球墨铸铁,一般适用于不同工况条件下使用的耐磨零件。 耐磨钢目前尚没有系统的技术标准,但制造耐磨零件所选用的钢类及钢种较广,一部分结构钢、工具钢及合金铸铁均常用于制造各种耐磨零件。近年来还发展了一些耐磨专用钢。一般是根据工作条件、磨损类型以及材料破坏机理的不同,来合理选用钢种。 实验14 Swing组件及事件处理(一) 【实验环境】 Windows XP,JDK1.6与Eclipse 【实验目的】 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。【实验要求】 1. 掌握在Applet 容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方 法。 2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 了解Java Swing 组件的使用方法。 5. 了解对话框的使用方法。 【实验内容】 一.创建图形用户界面 图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add 方法把组件加入到容器中。 1.在Applet 中添加标签、按钮并使用网格布局 (1)程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。 (2)编写LX8_1.java 程序文件,源代码如下。 (3)编译程序LX8_1.java。 (4)编写显示Applet 的页面文件LX8_1.html,在浏览器显示结果如图8.1 所示。 图8.1 2.在面板中添加组件 (1)程序功能:在Applet 中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。 (2)编写LX8_2.java 程序文件,源代码如下。 6.4 常用塑料模具零部件材料 塑料注射模具结构比较复杂,一套完整的模具有各种各样的零件,各个零件在模具中所处的位置、作用不同,对材料的性能要求就有所不同。合理选择模具零件的材料,是生产高质量模具、提高效率、降低成本的基础。 6.4.1 塑料注射模具对材料的基本要求 对于塑料注射模具,模具零件材料的基本要求如下。 1. 具有良好的机械加工性能 塑料注射模具零件的生产,大部分由机械加工完成。良好的机械加工性能是实现高速加工的必要条件。良好的机械加工性能能够延长加工刀具的寿命,提高切削性能,减小表面粗糙度值,以获得高精度的模具零件。 2. 具有足够的表面硬度和耐磨性 塑料制品的表面粗糙度和尺寸精度、模具的使用寿命等,都与模具表面的粗糙度、硬度和耐磨性有直接的关系。因此,要求塑料注射模具的成型表面有足够的硬度,其淬火硬度应不低于55 H RC,以便获得较高的耐磨性,延长模具的使用寿命。 3. 具有足够的强度和韧性 由于塑料注射模具在成型过程中反复受到压应力(注射机的锁模力)和拉应力(注射模型腔的注射压力)的作用,特别是大中型和结构形状复杂的注射模具,要求其模具零件材料必须有高的强度和良好的韧性,以满足使用要求。 4. 具有良好的抛光性能 为了获得高光洁表面的塑料制品,要求模具成型零件表面的粗糙度值小,因而要求对成型零件表面进行抛光以减小其表面粗糙度值。为保证抛光效果,模具材料不应有气孔、杂质等缺陷。 5. 具有良好的热处理工艺性 模具材料经常依靠热处理来达到必要的硬度,这就要求材料具有较好的淬硬性和淬透性。塑料注射模具的零件往往形状较复杂,淬火后进行加工较为困难,甚至根本无法加工,因此模具零件应尽量选择热处理变形小的材料,以减少热处理后的加工量。 6. 具有良好的耐腐蚀性 一些塑料及其添加剂在成型时会产生腐蚀性气体,因此选择的模具材料应具有一定的耐腐蚀性,另外还可以采用镀镍、铬等方法提高模具型腔表面的抗蚀能力。 7. 表面加工性能好 塑料制品要求外表美观,花纹装饰时,则要求对模具型腔表面进行化学腐蚀花纹,因此要求模具材料蚀刻花纹容易,花纹清晰、耐磨损。 耐磨零件材料概述 材料表面强化处理 农机具耐磨零件材料 球磨机磨球材料 耐磨材料概述 高锰钢的耐磨性 典型耐磨零件用钢 耐磨件--犁壁 耐磨件--泥浆泵缸套 耐磨件--锤式粉碎机锤片 耐磨件--风扇磨煤机护勾、护甲 耐磨件--稻麦收割机光滑刃动刀片 耐磨件--耙片 耐磨件--锄铲 耐磨件--稻麦收割机光滑刃定刀 片 耐磨件--旋耕机刀片 耐磨件--甘蔗粉碎机切片耐磨件--剪羊毛机刀片耐磨件--切草机刀片 耐磨件--旋耕机齿轮 耐磨件--联合收割机链轮耐磨件--泥浆活塞杆 耐磨件--推土机铲运机铲刀耐磨件--凿岩机 耐磨件--钻探机械钻具 耐磨件--犁铧 耐磨件--覆带板 国外工程机械耐磨件用钢及热处理 德国挖掘机斗齿 日本挖掘机斗齿 日本推土机、装载机、行走机构日本推土机、装载机、工作装置美国挖掘机斗齿 材料表面强化处理 材料表面强化处理是提高耐磨性的重要措施之一。除了常用的化学热处理(渗碳、渗硼等)和表面淬火方法外,还有表面冶金强化(表面熔化、表面合金化、表面涂层)、气相反应沉积、离子注入等方法都能提高零件表面的耐磨性和疲劳强度等性能。耐磨堆焊是以提高耐磨性为主要目的的堆焊工艺。耐磨堆焊材料也就成为一类重要的金属耐磨材料。常用的耐磨堆焊材料有铁基合金、钴合金、镍合金等。耐磨堆焊材料的范围很广泛的。应该在耐磨性、对环境的适应能力和可焊性等几方面综合考虑正确选用堆焊材料。 耐磨材料概述 用于制造耐磨零件的金属耐磨材料包括钢、复合钢材和铸铁等。高锰钢是历史悠久的耐磨材料,在恶劣工况条件下,不容易产生塑性失稳,而具有相当好的耐磨性;但它只有在冲击载荷及单位压力较大的磨料磨损条件下,产生加工硬化效应,才显示出较其他材料具有更优良的耐磨性。对于冲击载荷不太大的易磨损零部件,目前较广泛选用成本较低的非合金钢(碳素钢)或中高碳合金钢,并采取一定的工艺措施以提高其耐磨性。选用表面硬化钢或复合钢材制作的零部件,在耐磨、耐冲击等性能方面都具有明显的优点,可提高使用寿命,但成本较高。耐磨铸铁的耐磨性好,成本低,包括冷硬铸铁、白口铸铁和中锰球墨铸铁,一般适用于不同工况条件下使用的耐磨零件。 耐磨钢目前尚没有系统的技术标准,但制造耐磨零件所选用的钢类及钢种较广,一部分结构钢、工具钢及合金铸铁均常用于制造各种耐磨零件。近年来还发展了一些耐磨专用钢。一般是根据工作条件、磨损类型以及材料破坏机理的不同,来合理选用钢种。 农机具耐磨零件材料 农业机械中旋耕刀、耙片等零件在作业时与土壤中的砂石、树根等相碰撞,要求心部或承力层有较好的韧性而刃口或表面有高的耐磨性,所以一般选用65Mn钢。也常采用复合钢材、多层轧材以及处理工艺。各类作物的收割刀片以接触疲劳磨损和磨料磨损 上机实践7 组件及事件处理2 实验1 方程求根 2.模板代码 SquareEquation.java public class SquareEquation { double a,b,c; double root1,root2; public void setA(double a) { this.a=a; } public void setB(double b) { this.b=b; } public void setC(double c) { this.c=c; } public double getRootOne() throws NoRealRootException,NoSquareEquationException { if(a!=0) { double disk=b*b-4*a*c; if(disk>=0) { root1=(-b+Math.sqrt(disk))/(2*a); } else { throw new NoRealRootException("没有实根"); } } else { throw new NoRealRootException("不是二次方程"); } return root1; } public double getRootTwo() throws NoRealRootException,NoSquareEquationException { if(a!=0) { double disk=b*b-4*a*c; if(disk>=0) { root2=(-b-Math.sqrt(disk))/(2*a); } else { throw new NoRealRootException("没有实根"); } } else { throw new NoRealRootException("不是二次方程"); } return root2; } } class NoRealRootException extends Exception { String message; NoRealRootException(String s) { message=s; } public String getMessage() { return message; } } class NoSquareEquationException extends Exception { String message; NoSquareEquationException(String s) { message=s; } public String getMessage() { return message; } } EquationFrame.java import java.awt.*; import java.awt.event.*; public class EquationFrame extends Frame implements ActionListener { SquareEquation equation; TextField textA,textB,textC; TextArea showRoots; Button controlButton; public EquationFrame() { equation=new SquareEquation(); textA=new TextField(8); textB=new TextField(8); textC=new TextField(8); showRoots=new TextArea(); controlButton=new Button("确定"); 附录A 机械零件的常用材料 机械零件的常用材料分为金属和非金属两大类。其中,金属材料应用最广,非金属材料以其独特的性能也日益显示出广阔的应用前景。金属材料包括黑色金属(钢、铸铁)和有色金属,前者应用最多。此外,近年来复合材料的研究与开发,也已成为材料科学的一个新方向。下面简要介绍机械零件的常用材料及其应用。 A.1 钢钢的品种多,性能好,是机械零件最常用的材料。 A.1.1 碳素钢碳素钢的性能主要取决于含碳量,即碳的质量百分含量。含碳量越高,钢的强度越高,塑性越低。由于碳素钢生产批量大,价格低,供应充足,一般的机械零件应优先选用。碳素钢分为碳素结构钢(GB/T 700—1988GB/T 699—1988)。前者主要用于受力不大而且基本上是承受静载荷的零件,其中以Q235、Q255较为常用。等杂质较少,其性能优于碳素结构钢,而且能同时保证钢的机械性能和化学成分,可以进行热处理,故常用于受力较大,且受变载荷或冲击载荷作用的零件。 优质碳素结构钢的牌号用两位数字表示,代表钢中碳的平均含量。如45钢,其平均含量碳为0.45%。对于含锰量较高的优质碳素结构钢,其牌号还要在含碳量数字之后加注符号“Mn ”,如40Mn 等。平均含碳量低于0.25%0.25%~0.60%母、齿轮、键、轴等零件;平均含碳量高于0.60%弹性,是弹簧、钢丝绳等零件的常用材料。 低韧性。应当指出,合金钢的性能不仅与化学成分有关,在很大程度上还取决于适当的热处理。由于合金钢价格较贵,通常只用于制造重要的或具有特殊性能要求的机械零件。 含各主要合金元素的符号及其含量,而且规定:合金元素平均含量低于1.5%时,不注含 机械设计基础 常用组合逻辑器件的原理及集成电路 在数字集成产品中有许多具有特定组合逻辑功能的数字集成器件,称为组合逻辑器件(或组合逻辑部件)。本节主要介绍这些组合器件,以及这些组合部件的应用。 1. 编码器和译码器 (1)编码器 组合逻辑部件中的编码器是对输入赋予一定的二进制代码,给定输入就有相应的二进制码输出。常用的编码器有二进制编码器和二—十进制编码器等。所谓二进制编码器是指输入 变量数(m )和输出变量数(n )成2n 倍关系的编码器,如有4线/2线,8线/3线,16线/4 线的集成二进制编码器;二—十进制编码器是输入十进制数(十个输入分别代表0~9十个数)输出相应BCD 码的10线/4线编码器。 1)二进制编码器 二进制编码器是对2n 个输入进行二进制编码的组合逻辑器件,按输出二进制位数称为 n 位二进制编码器。二线―四线编码器编码器有4个输入(I 0,I 1,I 2,I 3分别表示0~3四个数或四个事件),给定一个数(或出现某一事件)以该输入为1表示,编码器输出对应二位二进制码(Y 1Y 0),其真值表如表3-1所示。根据真值表可得最小项表达式∑=)4,1()I ,I ,I ,(I Y 32100m ,()∑=)2,1(I ,I ,I ,I Y 32101m 。进一步分析表3-1,若限定输入中只能有一个为“1”,那么,除表3-6所列最小项和m 0外都是禁止项,则输出表达式可以用下式表示: 31310I I I I Y =+= 32321I I I I Y =+= 。 图3-2 2线/4线编码器 由此输出函数表达式可得与非门组成的,如图3-2所示的2线/4线编码器逻辑图。 2)优先编码器 由上述编码器真值表可以知道,4个输入中只允许一个输入有信号(输入高电平)。若I 1和I 2同时为1,则输出Y 1Y 0为11,此二进制码是I 3有输入时的输出编码。即此编码器在多个输入有效时会出现逻辑错误,这是其一。其二,在无输入时,即输入全0时,输出Y 1Y 0为00,与I 0为1时相同。也就是说,当Y 1Y 0=00时,输入端I 0并不一定有信号。 为了解决多个输入同时有效问题可采用优先编码方式。优先编码指按输入信号优先权对输入编码,既可以大数优先,也可以小数优先。为了解决输出唯一性问题可增加输出使能端E O ,用以指示输出的有效性。 大数优先的优先编码器真值表如表3-2所示。表3-2中增加一个输入使能信号E I ,E I 等于零时,禁止输入,此时无论输入是什么,输出都无效。只有E I 等于1时才具有优先编码功能。增加的输出使能信号E O 为1时,表示输出有效。 () ()32I 332I 1I I E I I I E Y +=+= I 0 I 1 I 2 I 3 Y 1 Y 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 表3-1 2线/4线编码器真值表 I I I I 0 1 E I I 0 I 1 I 2 I 3 Y 1 Y 0 E 表3-2 2线/4线优先编码器真值0 × × × × 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 × 1 0 0 0 1 1 1 × × 1 0 1 0 1 1 × × × 1 1 1 1 机械零件的常用材料及选用原则一.机械零件常用材料: 机械零件常用材料主要有黑色金属﹑有色金属﹑非金属材料和各种复合材料四大类.其中以黑色金属中的钢﹑铸铁,及有色金属中的铜合金﹑铝合金最为常用,其次是非金属材料中的高分子材料﹑陶瓷材料和复合材料.有关知识在金属工艺学及工程材料学等,分别介绍. 二.机械零件材料的选用原则: 在机械设计中合理地选择材料是一个很重要的问题.选择零件的材料主要应考虑三方面的问题,即使用要求﹑工艺要求和经济性要求. 1.使用要求:满足使用要求是选择零件材料的最基本原则.使用要求一般包括:(1)零件的工作和受载情况,(2)对零件尺寸和重要的限制,(3)零件的重要程度. 在考虑使用要求时要抓住主要问题,兼顾一切.一般地讲,减轻重量是机械设计的主要要求之一.若零件尺寸取决於强度,且尺寸和重量又受到某些限制时,应选用强度较高的材料.在滑动摩擦下工作的零件应选用减摩性能好的材料或耐磨材料.在高温下工作的零件应选用耐热材料,在腐蚀介质中工作的零件应选用耐蚀材料. 2.工艺要求:所谓工艺要求,是指所选用材料的冷﹑热加工性能好.比如同是箱体零件采用铸件还是焊接件,要看生产批量大小.大批量宜用铸件,小批量宜用焊接件.如果是铸造毛坯应选用流动性好的材料,若是焊接件应选用焊性好的材料. 选择材料还必须考虑材料热处理的工艺性. 由於一般零件都必须经切削加工,所以选择材料还要考虑其切削性能(易断屑﹑表面光滑﹑刀具磨损小等) (3).经济性要求:经济性首先体现在材料的相对价格上,在满足上述两方面选材原则基础上,应尽可能选择价格低廉的材料.其次对经济性不能只从材料价格上考虑,其加工制造费用,使用维护费用都应考虑在内.总之,经济性要综合考虑. 几种常用材料的特性 常用零件材料 1、丝杠 ①、轧制滚珠丝杠:CF53;螺母:SNCM220; ②、研磨滚珠丝杠:50CrMo4;螺母:SNCM220;(德标DIN标准) 2、直线滑轨:C55;滑块:铬钼合金钢 3、轴: 4、齿轮 ①、45钢热处理后有较好的综合机械性能。经过正火或调质可改善金相组织和材料的可切削性,降低加工后的表面粗糙度,并可减少淬火过程中的变形。因为45钢淬透性差、整体淬火后材料变脆,变形也大,所以一般采用齿面表面淬火,硬度可达HRC52-58。适合于机床行业、7级精度以下的齿轮。②、40Cr是中碳合金钢,和45钢相比,少量铬合金的加入可以使金属晶粒细化,提高强度、改善淬透性,减少了淬火时的变形。 ③、18CrMnTi、20CrMnTi使齿轮获得高的齿面硬度而心部又有足够韧性和较高的抗弯曲疲劳强度的方法是渗碳淬火。它具有良好的切削性能,渗碳时工件的变形小,淬火硬度可达到HRC56-62,残留的奥氏体量也少,多用于汽车,、拖拉机中承载大而有冲击的齿轮。 ④、38CrMoAlA氮化钢经氮化处理后,比渗碳淬火的齿轮具有更高的耐磨性与耐腐蚀性,变形很小,可以不磨齿,多用来作为高速传动中需要耐磨的齿轮材料。 ⑤、铸铁容易铸成复杂的形状,容易切削,成本低,但其抗弯强度、耐冲击和耐磨性能差。故常用于受力不大、无冲击、低速的齿轮, ⑥、有色金属作为齿轮材料的有黄铜HPB59-1、青铜QSNP10-1和铝合金LC4。 ⑦、非金属材料中的夹布胶木、尼龙、塑料也常用于制造齿轮。这些材料具有易加工、传动噪声小、耐磨、减振性好等优点,使用于轻载、需减振、低噪声、润滑条件差的场合。 5、弹簧 为了保证弹簧能够可靠地工作,其材料除应满足具有较高的强度极限和屈服极限外,还必须具有较高的弹性极限、疲劳极限、冲击韧性、塑性和良好的热处理工艺性等。实践中应用最广泛的就是弹簧钢, 常见电子元件认识 在我们生产的产品中,PNP,插件接触的元器件有电阻、电容、二极管、三极管、双栅极场效应管、IC、PCB板等,下面分别对其简单说明。 1、电阻(RESISTOR简称RES) 1-01.分类 (1)固定电阻: 按材料分有金属皮膜,碳素皮膜等电阻; 按外形分有插脚电阻,表面电阻等电阻; 按名称分有热敏电阻,压敏电阻,色环电阻,贴片电阻等电阻 (2)微调电阻:亦称半可调电阻 (3)可调电阻:亦称电位器或可变电阻 一般情况下(1)类电阻值不变化,(2)(3)类电阻阻值可随调整而变化,我们常用的有色环电阻,代号类电阻,表面电阻等,此类电阻没有方向性 1-02.基本单位及换算: 如右图(二)所示: A=第一色环(十位数)C=第三色环(幂指数) B=第二色环(个位数)D=最末环(误差值色环) 电阻值计算:R =(A×10+B)×10C A=红色=2C=黄色=4B=黑色=0D=银色=±10% 电阻值:R=(2×10+0)×104 =200KΩ 误差值:=±10% (二) 即该阻值180=200-200×10%≤R≤200+200×10%=220内均为OK 注:区分最末环 1)一般金色、银色为最末环 2)与其它色环隔离较远的一环为最末环 特例:五色环电阻的计算方法与四色环计算方法相同,五色色环前三位 为有效数字,如右图(三)所示:A=第一色环(百位数)A=红色2(三) B=第二色环(十位数)B=红色2C=第三色环(个位数)C=棕色1D=第四色环(幂指数)D=橙色3E=最末环(误差值色环) E=红色=±2% 电阻值计算:R=(A×100+B×10+C)×10 D R=(2×100+2×10+1)×10 3 误差值:=±2% 注:由于五色环电阻阻值准确,通常只有两种误差代号:±1%及±2%1-03-02代号类电阻,如右图(四)所示: 其阻值用三位代号数值来表示。 计算方法有两种:a)用LCR 测试仪直接读出其电阻值; b)根据表面数值来计算 (四) 代号电阻值 10110×10=100Ω10210×100=1KΩ10310×1000=10KΩ10410×10000=100KΩ271 27×10=270 B A C D 分隔开 B A C D E 103 发动机关重件材料、热处理方式及主要技术要求(参考) 序号配件名称配件材料热处理方式主要技术要求备注 1凸轮轴QT700-2(球铁)高频淬火HRC50-60,硬层深1-4mm 铸件硬度HRB85-98 2排气门5Cr21Mn9Ni4N 调质处理、 氮化并退火 杆部调质HRC30-40,头部≥48HRC 氮化层深0.01mm以上 3进气门4Cr10Si2Mo 调质处理、 氮化并退火 杆部头部调质HRC26-33, 氮表面渗碳、高频淬火m以上 4摇臂轴20CrMo渗碳淬火HRA74-76 5气门摇臂20CrMo 表面渗碳、 高频淬火 深度0.5~0.8mm,硬度为80~83HRA 6正时从动链轮20CrMnTi渗碳淬火渗碳层深0.3~0.5mm,硬度50-60HRC。 7正时主动链轮20CrMnTi渗碳淬火渗碳层深0.5~1mm,淬火深度:0.3-0.5mm,齿面硬度56-60HRA,心部硬度25-30HRC 8活塞环二QT700-2(球铁)1、外圆表面处理:Ep·Cr50hd,硬度 800~1100HV; 2、环两侧面的磷化层总厚度为0.02~ 0.06mm 3、球墨铸铁环的硬度为100~112HRB; 4、金相组织按GB/T3509有关规定,并符合:石墨:径向厚度<4.5mm时,要求1~6级,径向厚度≥4.5时,要求1~5级。磷共晶分布要求1~4,磷共晶大小要求1~3,铁素体要求1~4级。 9活塞环一55CrSi 1、外圆表面处理:Ep·Cr50hd,镀铬 层厚0.05~0.1mm,硬度800~1100HV; 2、磷化处理,磷化层总厚度为0.003~ 0.006mm。 3、基体组织为回火索氏体,基体硬度 为69~74HRA; 10活塞ZL109淬火、时效、退 火 1、硬度114~140HB; 2、金相组织要求:粗晶si呈细小块状分 布,晶体尺寸一般在10~20μm之间,共 晶si呈短条状及点状均匀分布,其它应 符合GB/T3508《内燃机铸造铝活塞金相 组织检验标准》的要求。 11曲柄销20CrMo渗碳淬火表面渗碳淬火,渗碳层厚度1.0~1,表面硬度60~65HRC,心部硬度30~45HRC。 12连杆20CrMnTi渗碳淬火连杆大、小头端孔内径及两端面进行渗碳高频淬火,大端内孔研磨后,渗碳层深度为0.8~1.0,小端内孔研磨后,渗碳层深度为0.8~1.0以下:大端部硬度为60~64HRC,大端心部硬度为28~44HRC,小端部硬度为25~32HRC,小端心部硬度为不少于15HRC.其余表面镀铜保护。 13右曲柄40Cr调质、淬火1、直径Φ19.8、Φ21.9和Φ22处为高频淬火处理,深0.8~1.3,硬度HRC50~60; 2、锥面及螺纹处调质处理,硬度24~28HRC。实验项目3 组件与事件处理第2部分
给排水工程常用材料及配件
JavaSwing中处理各组件事件的一般步骤完整版
Java Swing中处理各组件事件的一般步骤
常用电气元件的功能介绍
常用材料零件--耐磨零件
实验14 Swing组件及事件处理(一)
常用塑料模具零部件材料解析(doc 7页)
常用主要材料零件耐磨零件
上机实践7组件及事件处理2
机械零件常用材料.
数电常用组合逻辑器件的原理及集成电路
机械零件的常用材料及选用原则
常用零件材料
常用电子元件介绍
常用零部件材料热处理及技术要求