《2022年Java图形用户界面实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年Java图形用户界面实验报告.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 图形用户界面实验报告西 安 邮 电 大 学(计算机学院 )课内实验报告实验名称 : 图形用户界面专业名称 : 计算机科学与技术班级: 计科 1405班学生姓名 : 高宏伟学号: 指导教师 : 刘霞林实验日期 : 2016 、11 、24一、实验目的了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 了解如何使用布局管理器对组件进行管理, 以及如何使用 Java 的事件处理机制。二、实验要求1、 掌握使用布局管理器对组件进行管理的方法。2、 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。3、 掌握编写独立运行的窗口界面的方法。4、 掌握组件的
2、使用方法。5、 了解对话框的使用方法。三、实验内容( 一) 算术测试。实验要求 : 编写一个算术测试小软件, 用来训练小学生的算术能力。程序由3个类组成 , 其中 Teacher 类 对 象 负 责 给 出 算 术 题 目 , 并 判 断 回 答 者 的 答 案 就 是 否 正确 ;ComputerFrame 类 对 象 负 责 为 算 术 题 目 提 供 视 图 , 比 如 用 户 可 以 通 过精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 13 页 - - - - - - - - - -
3、 Java 图形用户界面实验报告ComputerFrame类对象提供的GUI界面瞧到题目, 并通过该GUI界面给出题目的答案;MainClass 就是软件的主类。程序模板 : Teacher、java 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) nu
4、mberTwo=(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、equ
5、als(-) if(answer=numberOne-numberTwo) right=true; else right=false; return right; ComputerFrame、 java import java、awt、*; import java、awt、event、*; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告public class ComputerFrame extends Fram
6、e 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, 其可见字符长
7、就是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); tex
8、tResult、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 Windo
9、wAdapter() public 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); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,
10、共 13 页 - - - - - - - - - - Java 图形用户界面实验报告 String operator=teacher、givetOperator(); textOne、setText(+number1); textTwo、setText(+number2); operatorLabel、setText(operator); message、setText(请回答 ); textResult、setText(null); if(【代码 8】) /判断事件源就是否就是giveAnwser String answer=textResult、getText(); try int res
11、ult=Integer、parseInt(answer); if(teacher、getRight(result)=true) message、setText(您回答正确 ); else message、setText(您回答错误 ); catch(NumberFormatException ex) message、setText(请输入数字字符); textResult、requestFocus(); validate(); MainClass 、 java public class MainClass public static void main(String args) Compute
12、rFrame frame; frame=【代码 9】/创建窗口 ,其标题为 :算术测试 实验后的练习 : 1、 给上述程序增加测试乘、除的功能。( 二) 信号灯。实验要求 : 编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表, 该下拉列表有“”、“”与“”三个选项。在窗口的中心添加一个画布, 当用户在下拉列表选择某项后 ,画布上绘制相应的信号灯。程序模板 : SignalCanvas 、java import java、awt、*; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 13
13、 页 - - - - - - - - - - Java 图形用户界面实验报告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
14、、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 import java、awt、*; import java、applet 、*; import java
15、、awt、event 、*; public class SignalFrame extends Frame implements ItemListener Choice choice; SignalCanvas signal=null; String itemRed=红灯 ,itemYellow=黄灯 ,itemGreen=绿灯 ; public SignalFrame() choice=【代码 1】 /创建 choice 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 13 页 - - -
16、- - - - - - - Java 图形用户界面实验报告【代码 2】 /创建 choice 添加 itemRed 【代码 3】 /创建 choice 添加 itemYellow 【代码 4】 /创建 choice 添加 itemGreen 【代码 5】/将当前窗口注册为choice 的 ItemEvent 事件监视器 add(choice,BorderLayout、NORTH); try Class cs=Class、forName(SignalCanvas); signal=(SignalCanvas)cs、newInstance(); add(signal,BorderLayout、CE
17、NTER); 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= 【代码 6】
18、/ 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(itemYel
19、low) if(signal!=null) signal、setRed(0); signal、setYellow(1); signal、setGreen(0); signal、setPosition(w/3,h/3); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告 signal、repaint(); else if(item、equals(itemGreen) if(signal!=null) signal、s
20、etRed(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 SignalFrame() ; frame、setTitle(信号灯 ); 实验后的练习 : 1、 改进上述程序, 在下拉列表中增加“熄灭所有灯” 选项 , 当选中
21、该项时 , 画布上绘制一个半径为0, 位置就是 (0,0) 的圆。( 三) 布局与日历。实验要求 : 编写一个应用程序, 有一个窗口 , 该窗口为 BorderLayout 布局。窗口的中心添加一个 Panel 容器 :pCenter,pCenter的布局就是 7行7列的 GriderLayout布局 ,pCenter中放置 49个标签 , 用来显示日历。窗口的北面添加一个Panel 容器 pNorth, 其布局就是 FlowLayout 布 局 ,pNorth放 置 两 个 按 钮 :nextMonth与 previousMonth,单 击nextMonth 按钮 , 可以显示当前月的下一月
22、的日历; 单击 previousMonth 按钮 ,可以显示当前月的上一月的日历。窗口的南面添加一个Panel 容器 pSouth, 其布局就是FlowLayout 布局 ,pSouth 中放置一个标签用来显示一些信息。程序模板 : CalendarBean、java import java 、util、Calendar; public class CalendarBean String day; int year=2005,month=0; public void setYear(int year) this、year=year; 精品资料 - - - 欢迎下载 - - - - - - -
23、- - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告public int getYear() 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
24、(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+) ai=Stri
25、ng 、valueOf(n) ; n+; return a; CalendarFrame 、java import java、util、*; import java、awt、*; import java、awt、event、*; import java、applet、*; public class CalendarFrame extends Frame implements ActionListener Label labelDay=new Label42; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第
26、 8 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告Button titleName=new Button7; String name= 日,一,二,三, 四,五,六; Button nextMonth,previousMonth; int year=2006,month=10; CalendarBean calendar; Label showMessage=new Label(,Label 、CENTER); public CalendarFrame() Panel pCenter=new Panel(); 【代码 1】 /将 pCenter 的布
27、局设置为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(year); calendar、setMonth(month); String day=calendar 、get
28、Calendar(); 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(month); String day=calendar 、getCalendar(); for(int i=0;i42;i+)
29、 labelDayi 、setText(dayi); showMessage 、 setText(日历 :+calendar、 getYear()+年+calendar、 getMonth()+月 ); CalendarMainClass、java public class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame(); frame、setBounds(100,100,360,300); frame、setVisible(true); frame、va
30、lidate(); frame、addWindowListener(new java 、awt、event、WindowAdapter() public void windowClosing(java 、 awt 、 event 、WindowEvent e) System、exit(0); ); 实验后的练习 : 1.请在 CalendarFrame 类中增加一个TextField文本框 , 用户可以通过在文本框中输入年份来修改calendar 对象的 int 成员 year 。( 四) 选择复选框与单选框按钮的事件处理程序。精品资料 - - - 欢迎下载 - - - - - - - - -
31、 - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告(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
32、Applet implements ItemListener TextArea area=new TextArea(6,30);/创建文本区String Item=2 进制 ,8 进制 ,16 进制 ,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( 请选择
33、进制 :); for(int i=0; i4; i+) cbi=new Checkbox(Itemi); add(cbi); cbi、 addItemListener(this); CheckboxGroup 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(It
34、emEvent e) int x=Integer、 parseInt(TF、getText(); if (e、getItem ()=2 进制 ) area、 append (您选 择 的 就是 +e 、getItem ()+ Integer、toBinaryString(x)+n); if (e、getItem ()=8 进制 ) area、 append (您选 择 的 就是 +e 、getItem ()+ Integer、toOctalString(x)+n); if (e、getItem ()=16 进制 ) area、 append ( 您选择的就是+e、 getItem ()+Int
35、eger、 toHexString(x)+n); if (e、getItem ()=10 进制 ) area、append ( 您选择的就是+e 、getItem ()+x+n); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告(2)编译程序 LX6_1 、java。(3)运行程序 LX6_1 。四、实验结果( 二) 信号灯。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 13 页 - - - - - - - - - - Java 图形用户界面实验报告六、总结通过这次实验了解了图形用户界面基本组件窗口 、 按钮、文本框、选择框、滚动条等的使用方法,了解了如何 使 用布局管理器对组件进行管理,以及如何使用Java的事件 处 理机制。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 13 页 - - - - - - - - - -
限制150内