1第九章原码《Java就业培训教程》P316源码程序清单:TestStopWatch.javaimportjava.awt.*;importjava.awt.event.*;importjava.util.*;importjava.text.SimpleDateFormat;classStopWatchextendsCanvasimplementsRunnable{privatelongstartTime=0;privatelongendTime=0;privatebooleanbStart=false;publicStopWatch(){enableEvents(AWTEvent.MOUSE_EVENT_MASK);setSize(80,30);}protectedvoidprocessMouseEvent(MouseEvente){if(e.getID()==MouseEvent.MOUSE_PRESSED){/*鼠标按下时,启动计时线程,并让起始时间变量和终止时间变量都等于当前时间*/bStart=true;startTime=endTime=System.currentTimeMillis();repaint();newThread(this).start();}elseif(e.getID()==MouseEvent.MOUSE_RELEASED){/*鼠标释放时,终止计时线程,并重绘窗口表面上的内容*/bStart=false;repaint();}super.processMouseEvent(e);}publicvoidpaint(Graphicsg){/*时间值的小时、分钟、秒、都用两位数字显示,不足两位的部分前面加0,即HH:mm:ss这种的格式。*/SimpleDateFormatsdf=newSimpleDateFormat(HH:mm:ss);/*最刚开始编写这个程序的时候,直接使用elapsedTime.setTime(endTime-startTime);语句设置elapsedTime时间对象的数字值,从运行结果上发现,即使endTime-startTime等于0,但elapsedTime显示的时间却不是00:00:00,而是08:00:00。我们曾经讲过,时间在计算机2内存中也是用一个长整数表示的,在这里,我们又发现,即使这个内存中的长整数等于0时,由于Date类考虑了本地时区问题,所以,其表示的时间就不一定为零点:零分:零秒。这里不需要考虑时区问题,只是借助Date类来帮我们生成HH:mm:ss这种时间表示格式。明白这个问题后,我们就不难想像出,可以先求出显示时间为00:00:00的时间对象在内存中对应的那个长整数,然后在这个基础上加上计时器所记下的时间值,最后就可以显示出我们想要的结果。*/DateelapsedTime=null;try{elapsedTime=sdf.parse(00:00:00);}catch(Exceptione){}elapsedTime.setTime(endTime-startTime+elapsedTime.getTime());Stringdisplay=sdf.format(elapsedTime);g.drawRect(0,0,78,28);g.fill3DRect(2,2,75,25,true);g.setColor(Color.WHITE);g.drawString(display,10,20);}publicvoidrun(){while(bStart){try{Thread.sleep(500);}catch(Exceptione){e.printStackTrace();}endTime=System.currentTimeMillis();repaint();}}}publicclassTestStopWatch{publicstaticvoidmain(String[]args){Framef=newFrame(StopWatch);f.add(newStopWatch());f.setSize(200,200);f.setVisible(true);f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){3System.exit(0);}});}}《Java就业培训教程》P319源码程序清单:TestCheckbox.javaimportjava.awt.*;importjava.awt.event.*;publicclassTestCheckbox{Checkboxcb1=newCheckbox(你喜欢我吗?,true);CheckboxGroupcbg=newCheckboxGroup();Checkboxcb2=newCheckbox(喜欢,cbg,true);Checkboxcb3=newCheckbox(不喜欢,cbg,false);publicvoidinit(){Framef=newFrame(TestCheckBox);//创建FlowLayout布局管理器,关于布局管理器,本章后面有专门的讲解,看不明白//的读者暂时可以不去下面两句代码的作用。FlowLayoutfl=newFlowLayout();f.setLayout(fl);f.add(cb1);f.add(cb2);f.add(cb3);cb1.addItemListener(newCbItemListener());cb2.addItemListener(newCbItemListener());cb3.addItemListener(newCbItemListener());f.setBounds(0,0,300,100);f.setVisible(true);f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}classCbItemListenerimplementsItemListener{publicvoiditemStateChanged(ItemEvente){Checkboxcb=(Checkbox)e.getItemSelectable();if(cb.getLabel().equals(你喜欢我吗?))4{if(cb.getState()==true)System.out.println(我很高兴);elseSystem.out.println(我很伤心);}/*elseif(cb.getLabel().equals(喜欢)){if(e.getStateChange()==ItemEvent.SELECTED)System.out.println(我也喜欢你);elseSystem.out.println(我也不喜欢你);}*/else{Checkboxcbx=cbg.getSelectedCheckbox();if(cbx!=null)System.out.println(cbx.getLabel());}}}publicstaticvoidmain(String[]args){newTestCheckbox().init();}}《Java就业培训教程》P321源码程序清单:TestChoice.javaimportjava.awt.*;importjava.awt.event.*;publicclassTestChoice{Choicech=newChoice();//创建Choice对象TestChoice(){ch.add(choice1);//用add方法向列表里加入选项ch.add(choice2);//用add方法向列表里加入选项ch.add(choice3);//用add方法向列表里加入选项FlowLayoutfl=newFlowLayout();Framef=newFrame(TestChoice);f.setLayout(fl);f.add(ch);//把列表加入到窗口f.setBounds(0,0,200,100);f.setVisible(true);f.addWindowListener(newWindowAdapter(){5publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicstaticvoidmain(String[]args){newTestChoice();}}《Java就业培训教程》P323源码程序清单:TestMenuBar.javaimportjava.awt.*;importjava.awt.event.*;publicclassTestMenuBar{MenuBarmenubar=newMenuBar();//创建菜单条对象MenufileM=newMenu(File);//创建各菜单MenueditM=newMenu(Edit);//创建各菜单MenutoolsM=newMenu(Tools);//创建各菜单MenuhelpM=newMenu(Help);//创建各菜单MenuItemfileMI1=newMenuItem(New);//创建各菜单项MenuItemfileMI2=newMenuItem(Open);//创建各菜单项MenuItemfileMI3=newMenuItem(Save);//创建各菜单项CheckboxMenuItemfileMI5=newCheckboxMenuItem(Quit,true);//创建各菜单项MenufilePrint=newMenu(print);//创建子菜单MenuItemprintM1=newMenuItem(preview);MenuItemprintM2=newMenuItem(setting);TestMenuBar(){FlowLayoutfl=newFlowLayout();Framef=newFrame(TestMenuBar);f.setLayout(fl);menubar.add(fileM);//将菜单加入菜单条menubar.add(editM);menubar.add(toolsM);menubar.add(helpM);fileM.add(fileMI1);//将菜单项加入file菜单中6fileM.add(fileMI2);fileM.add(fileMI3);filePrint.add(printM1);//将菜单项加入print菜单中filePrint.add(printM2);fileM.add(filePrint);//将print菜单作为一个菜单项加入file菜单中fileM.addSeparator();//将一条分割线加入菜单中fileM.add(fileMI5);//将菜单项加入菜单中f.setMenuBar(menubar);//把整个菜单系统显示在窗口中f.setBounds(0,0,250,200);f.setVisible(true);f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicstaticvoidmain(String[]args){newTestMenuBar();}}《Java就业培训教程》P327源码程序清单:TestDialog.javaimportjava.awt.*;importjava.awt.event.*;publicclassTestDialog{TextFieldtf=newTextField(10);Buttonb1=newButton(模态显示);Buttonb2=newBut