课程实验报告课程名称Java应用技术班级计算112实验日期2013.10.24姓名学号实验成绩实验名称实验4:图形用户界面设计实验目的及要求1.掌握窗口和菜单的使用;2.掌握文本框、按钮的使用、标签等常用图形组件的使用;3.掌握面板和画布的使用及布局设计;4.掌握常用的窗口事件、鼠标事件、焦点事件、键盘事件。实验环境操作系统:WindowsIDE:JDK或者MyEclipse实验内容(1)考试题。要求在一个界面内至少显示5道选择题,每道题4个选项。另有2个命令按钮,分别为“重新答题”(全部选项及正确答题数清空)和“提交”(计算),在按钮下方的标签内显示最终的正确的题目数。界面大致布局如下:调试过程及实验实验中遇到最主要的问题就是类掌握的不熟练,对相应的方法不知道。解决的方法:查找丰富的网络资源和API文档。一下是调试过程:1、初始界面:题目1:XXXXXXXX正确的答题数:XXXXXXXXA.XXXB.XXXC.XXXD.XXX题目2:XXXXXXXXA.XXXB.XXXC.XXXD.XXX提交重新答题结果答题后的界面:重新答题则恢复到原来的情况。总结实验不足的地方就是:它没有一个好的模式去适应不同的题目和问题。我所做的东西全部都是僵硬化的。我想如果他能数据库连接起来,应该会有更大的灵活性。附录importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JLabel;importjavax.swing.JRadioButton;importjavax.swing.ButtonGroup;importjavax.swing.JFrame;importjavax.swing.SwingUtilities;importjavax.swing.UIManager;importjavax.swing.event.*;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.Toolkit;importjavax.swing.JButton;importjava.awt.event.*;publicclassExaminationextendsJFrame{String[]qustion=newString[]{1.《管锥编》是谁的著作?,2.CPU的全称是什么?,3.美国的首都在哪儿?,4.儒家学术的创始人是谁?,5.《西游记》是我国何人写著而成?};String[][]chooser=newString[][]{{A.钱钟书,B.杨绛,C.纪晓岚,D.巴金},{A.中央处理器,B.computer,C.comepu,D.cpu},{A.华盛顿,B.纽约,C.加州,D.旧金山},{A.孔子,B.孟子,C.老子,D.荀子},{A.吴承恩,B.罗贯中,C.曹雪芹,D.施耐庵}};ProduceExam[]produceExam=newProduceExam[5];//统计选择正确的答案的个数,重复选择的不算privateinttotalture=0;privateJLabelendScore=newJLabel(你一共答对题目:);privateJButtonendExam=newJButton(提交);privateJButtonrestart=newJButton(重新答题);privateJPaneljp=newJPanel(newGridLayout(1,1));publicExamination(Stringname)throwsException{super(name);//屏幕居中放置setLocationRelativeTo(null);setLayout(newGridLayout(7,1));for(inti=0;i5;i++){produceExam[i]=newProduceExam(this.qustion[i],chooser[i]);this.add(produceExam[i]);}jp.add(endExam);jp.add(restart);this.add(endScore);this.add(jp);endExam.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Stringstr=e.getActionCommand();if(str==提交){if(JOptionPane.showConfirmDialog(null,你确定要提交答案吗?)==JOptionPane.OK_OPTION){endScore.setText(你一共答对题目:+totalture+道);}}}});restart.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){totalture=0;endScore.setText(你一共答对题目:);for(inti=0;i5;i++){produceExam[i].reset();}}});}publicstaticvoidmain(String[]args)throwsException{Examinationkaoshi=newExamination(考试);//设置成windows风格UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFeel);SwingUtilities.updateComponentTreeUI(kaoshi.getRootPane());kaoshi.setVisible(true);kaoshi.pack();kaoshi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}//内部类,用于产生题目和选项classProduceExamextendsJPanel{//显示题目privateJLabelqustion;//问题选项privateJRadioButton[]chooser=newJRadioButton[4];//把问题选项用ButtonGroup包围起来privateButtonGroupbagChooser=newButtonGroup();//带参构造函数publicProduceExam(Stringqustion,String[]chooser){//设置布局管理器setLayout(newGridLayout(2,1));this.qustion=newJLabel(qustion);this.add(this.qustion);JPaneljp=newJPanel(newGridLayout(1,1));for(inti=0;i4;i++){this.chooser[i]=newJRadioButton(chooser[i]);this.bagChooser.add(this.chooser[i]);jp.add(this.chooser[i]);}this.add(jp);//为第一个JRadioButton添加监听器,因为第一个答案是正确的this.chooser[0].addItemListener(newItemListener(){publicvoiditemStateChanged(ItemEvente){if(ItemEvent.SELECTED==e.getStateChange()){totalture++;}}});}publicvoidreset(){//清除选中状态bagChooser.clearSelection();}}}