Java图形用户界面实验报告

上传人:仙*** 文档编号:34232573 上传时间:2021-10-20 格式:DOC 页数:14 大小:150.50KB
收藏 版权申诉 举报 下载
Java图形用户界面实验报告_第1页
第1页 / 共14页
Java图形用户界面实验报告_第2页
第2页 / 共14页
Java图形用户界面实验报告_第3页
第3页 / 共14页
资源描述:

《Java图形用户界面实验报告》由会员分享,可在线阅读,更多相关《Java图形用户界面实验报告(14页珍藏版)》请在装配图网上搜索。

1、.西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 图形用户界面 专业名称: 计算机科学与技术班 级: 计科1405班 学生姓名: 高宏伟 学 号: 04141152指导教师: 刘霞林实验日期: 2016.11.24精品.一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。 2. 理解 Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方

2、法。 5. 了解对话框的使用方法。三、实验内容 (一)算术测试。 实验要求:编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。 程序模板:Teacher.javapublic class Teacher int numberOne,numberTwo; String operator=; boolean right

3、; 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

4、 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.javaimport java.awt.*;import java.awt.event.*;public class ComputerFrame extend

5、s Frame implements ActionListener TextField textOne,textTwo,textResult; Button getProblem,giveAnwser; Label operatorLabel,message; Teacher teacher; ComputerFrame(String s) super(s); teacher=new Teacher(); setLayout(new FlowLayout(); textOne=【代码1】 /创建textOne,其可见字符长是10 textTwo=【代码2】 /创建textTwo,其可见字符长是

6、10 textResult=【代码3】 /创建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); textResu

7、lt.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false);【代码4】/将当前窗口注册为getProblem的ActionEvent事件监视器 【代码5】/将当前窗口注册为giveAnwser的ActionEvent事件监视器 【代码6】/将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100); setVisible(true); validate(); addWindowListener(new WindowAdapter() publ

8、ic void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(【代码7】) /判断事件源是否是getProblem int number1=teacher.giveNumberOne(100); int number2=teacher.giveNumberTwo(100); String operator=teacher.givetOperator(); textOne.setText(+number1); textTwo.setText(+number

9、2); operatorLabel.setText(operator); message.setText(请回答);textResult.setText(null); if(【代码8】) /判断事件源是否是giveAnwser String answer=textResult.getText(); try int result=Integer.parseInt(answer); if(teacher.getRight(result)=true) message.setText(你回答正确); else message.setText(你回答错误); catch(NumberFormatExce

10、ption ex)精品. message.setText(请输入数字字符); textResult.requestFocus(); validate(); MainClass.javapublic class MainClass public static void main(String args) ComputerFrame frame; frame=【代码9】/创建窗口,其标题为:算术测试 实验后的练习:1. 给上述程序增加测试乘、除的功能。(二)信号灯。 实验要求:编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表,该下拉列表有“”、“”和“”三个选项。在窗口的中心添加一个画布,

11、当用户在下拉列表选择某项后,画布上绘制相应的信号灯。 程序模板:SignalCanvas.javaimport java.awt.*;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 v

12、oid 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.javaimport java.awt.*;impo

13、rt java.applet.*;import java.awt.event.*;public class SignalFrame extends Frame implements ItemListener Choice choice; SignalCanvas signal=null; String itemRed=红灯,itemYellow=黄灯,itemGreen=绿灯; public SignalFrame() choice=【代码1】 /创建choice 【代码2】 /创建choice添加itemRed 【代码3】 /创建choice添加itemYellow 【代码4】 /创建cho

14、ice添加itemGreen 【代码5】 /将当前窗口注册为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)

15、; setVisible(true);精品. validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void itemStateChanged(ItemEvent e) String item= 【代码6】 / choice返回被选中的条目 int w=signal.getBounds().width; int h=signal.getBounds().height; int m=Math.min(w,h); sig

16、nal.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)

17、; 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精品.public class SignalMainClass public static void main(String args) SignalFrame frame; frame=new Signal

18、Frame() ; frame.setTitle(信号灯); 实验后的练习:1. 改进上述程序,在下拉列表中增加“熄灭所有灯”选项,当选中该项时,画布上绘制一个半径为0,位置是(0,0)的圆。(三)布局与日历。 实验要求:编写一个应用程序,有一个窗口,该窗口为BorderLayout布局。窗口的中心添加一个Panel容器:pCenter,pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个Panel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth

19、,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一月的日历。窗口的南面添加一个Panel容器pSouth,其布局是FlowLayout布局,pSouth中放置一个标签用来显示一些信息。 程序模板:CalendarBean.javaimport java.util.Calendar;public class CalendarBean String day; int year=2005,month=0; public void setYear(int year) this.year=year; public int getYear(

20、) return year; public void setMonth(int month) this.month=month; public int getMonth() return month; 精品. public String getCalendar() String a=new String42; 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=

21、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+) ai=String.valueOf(n) ; n+; return a; CalendarFrame.javaimport java.util.*;import java.awt.*;import java.awt.event.

22、*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener Label labelDay=new Label42; Button titleName=new Button7; String name=日,一,二,三, 四,五,六; Button nextMonth,previousMonth; int year=2006,month=10; CalendarBean calendar; Label showMessage=new Label(,Label.CENTER); p

23、ublic CalendarFrame() Panel pCenter=new Panel();精品. 【代码1】 /将pCenter的布局设置为7行7列的GridLayout 布局。 for(int i=0;i7;i+) titleNamei=new Button(namei); 【代码2】/pCenter添加组件titleNamei。 for(int i=0;i42;i+) labelDayi=new Label(,Label.CENTER); 【代码3】/pCenter添加组件labelDayi。 calendar=new CalendarBean(); calendar.setYear

24、(year); calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i12) month=1; calendar.setMonth(month); String day=calendar.getCalendar(); for(int i=0;i42;i+) labelDayi.setText(dayi); 精品. else if(e.getSource()=previousMonth) month=month-1; if(month1) month=12; calendar.setMonth(mont

25、h); String day=calendar.getCalendar(); for(int i=0;i42;i+) labelDayi.setText(dayi); showMessage.setText(日历:+calendar.getYear()+年+calendar.getMonth()+月 ); CalendarMainClass.javapublic class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame(); frame.setBounds

26、(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); ); 实验后的练习:1. 请在CalendarFrame类中增加一个TextField文本框,用户可以通过在文本框中输入年份来修改calendar对象的int成员year。(四)选择复选框和单选框按钮的事件处理程序。

27、 (1)程序功能:在Applte 上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10 进制数,选择不同选项可转换为2、8、16进制数。 (2)编写LX6_4.java 程序文件,源代码如下。import java.applet.Applet; import java.awt.*; 精品.import java.awt.event.*;public class LX6_1 extends Applet implements ItemListener TextArea area=new TextArea(6,30);/创建文本区 String Item=2 进制,8进制,1

28、6进制,10进制; Checkbox cb=new Checkbox5; Checkbox radio=new Checkbox5; Label l=new Label(输入10 进制数); TextField TF=new TextField(6);/ 创建单行文本框 public void init() add(l);add(TF); add(area); add(new Label( 请选择进制:); for(int i=0; i4; i+) cbi=new Checkbox(Itemi); add(cbi); cbi.addItemListener(this); CheckboxGro

29、up cbGroup=new CheckboxGroup();/创建单选框add(new Label(请选择进制:); for(int i=0; i4; i+) radioi=new Checkbox(Itemi,cbGroup,false); add(radioi); radioi.addItemListener(this); public void itemStateChanged(ItemEvent e) int x=Integer.parseInt(TF.getText(); if (e.getItem ()=2 进制) area.append (你选择的是+e.getItem ()+

30、 Integer.toBinaryString(x)+n); if (e.getItem ()=8 进制) area.append (你选择的是+e.getItem ()+ Integer.toOctalString(x)+n); if (e.getItem ()=16 进制) area.append (你选择的是+e.getItem ()+Integer.toHexString(x)+n); if (e.getItem ()=10 进制) area.append (你选择的是+e.getItem ()+x+n); (2) 编译程序LX6_1.java。(3) 运行程序LX6_1。四、实验结果精品.(二)信号灯。 六、总结通过这次实验了解了图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解了如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。如有侵权请联系告知删除,感谢你们的配合!精品

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!