组件与事件编程Java实验报告三.docx

上传人:b****6 文档编号:6523912 上传时间:2023-01-07 格式:DOCX 页数:35 大小:89.25KB
下载 相关 举报
组件与事件编程Java实验报告三.docx_第1页
第1页 / 共35页
组件与事件编程Java实验报告三.docx_第2页
第2页 / 共35页
组件与事件编程Java实验报告三.docx_第3页
第3页 / 共35页
组件与事件编程Java实验报告三.docx_第4页
第4页 / 共35页
组件与事件编程Java实验报告三.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

组件与事件编程Java实验报告三.docx

《组件与事件编程Java实验报告三.docx》由会员分享,可在线阅读,更多相关《组件与事件编程Java实验报告三.docx(35页珍藏版)》请在冰豆网上搜索。

组件与事件编程Java实验报告三.docx

组件与事件编程Java实验报告三

甘肃政法学院

本科学生实验报告

(三)

姓名贾燚学院计算机科学学院

专业信息管理与信息系统

实验课程名称Java实用教程

试验时间2011年10月4日

指导教师及职称李瑞生

实验成绩

开课时间2011学年第2学期

 

甘肃政法学院实验管理中心印制

实验题目

组件与事件编程

小组合作

是○否☉

姓名

贾燚

班级

10级信管班

学号

201081020108

一、实验目的:

1、掌握java图形用户界面设计常用类及其各自重要方法的应用。

2、掌握java事件处理模式并熟练掌握文本框上事件处理的方法。

3、进一步掌握javaAWT组件、Swing组件及事件编程的各种方法。

4、掌握对话框的编制和事件处理方法。

5、掌握鼠标焦点事件、鼠标事件及键盘事件的处理方法。

二、实验环境:

装有Myeclipse8.5的计算机一台

三、实验内容与步骤:

1、算术测试

1)进入Myeclipse8.5界面,依次选择File—>New—>JavaProject命令,打开新建项目向导,在“Projectname”栏中输入项目名“Jy001”,单击“Finish”按钮

2)右击项目“Jy001”,选择“New—>Package”,在“Name”栏中输入包名“org.circle”,单击“Finish”按钮完成包的创建

3)右击项目“Jy001”的包“org.circle”,选择“New—>Class”,在“Name”栏中输入类名“Teacher”,单击“Finish”按钮完成类的创建

4)双击“Teacher.java”,编辑以下代码:

publicclassTeacher

{intnumberOne,numberTwo;

Stringoperator="";

booleanright;

publicintgiveNumberOne(intn)

{numberOne=(int)(Math.random()*n)+1;

returnnumberOne;

}

publicintgiveNumberTwo(intn)

{numberTwo=(int)(Math.random()*n)+1;

returnnumberTwo;

}

publicStringgiveOperator()

{doubled=Math.random();

if(d>=0.5)

operator="+";

else

operator="-";

returnoperator;

}

publicbooleangetRight(intanswer)

{if(operator.equals("+"))

{if(answer==numberOne+numberTwo)

right=true;

else

right=false;

}

elseif(operator.equals("-"))

{if(answer==numberOne-numberTwo)

right=true;

else

right=false;

}

returnright;

}

}

5)右击项目“Jy001”的包“org.circle”,选择“New—>Class”,在“Name”栏中输入类名“ComputerFrame”,单击“Finish”按钮完成类的创建

6)双击“ComputerFrame.java”,编辑以下代码:

importjava.awt.*;

importjava.awt.event.*;

publicclassComputerFrameextendsFrameimplementsActionListener

{TextFieldtextOne,textTwo,textResult;

ButtongetProblem,giveAnwser;

LabeloperatorLabel,message;

Teacherteacher;

ComputerFrame(Strings)

{super(s);

teacher=newTeacher();

setLayout(newFlowLayout());

textOne=newTextField(10);//创建textOne,其可见字符长是10

textTwo=newTextField(10);//创建textTwo,其可见字符长是10

textResult=newTextField(10);//创建textResult,其可见字符长是10

operatorLabel=newLabel("+");

message=newLabel("你还没有回答呢");

getProblem=newButton("获取题目");

giveAnwser=newButton("确认答案");

add(getProblem);

add(textOne);

add(operatorLabel);

add(textTwo);

add(newLabel("="));

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(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

}

);

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==getProblem)//判断事件源是否是getProblem

{intnumber1=teacher.giveNumberOne(100);

intnumber2=teacher.giveNumberTwo(100);

Stringoperator=teacher.givetOperator();

textOne.setText(""+number1);

textTwo.setText(""+number2);

operatorLabel.setText(operator);

message.setText("请回答");

textResult.setText(null);

}

if(e.getSource()==giveAnwser)//判断事件源是否是giveAnwser

{Stringanswer=textResult.getText();

try{

intresult=Integer.parseInt(answer);

if(teacher.getRight(result)==true)

{message.setText("你回答正确");

}

else

{message.setText("你回答错误");

}

}

catch(NumberFormatExceptionex)

{message.setText("请输入数字字符");

}

}

textResult.requestFocus();

validate();

}

}

7)右击项目“Jy001”的包“org.circle”,选择“New—>Class”,在“Name”栏中输入类名“MainClass”,单击“Finish”按钮完成类的创建

8)双击“MainClass.java”,编辑以下代码:

publicclassMainClass

{publicstaticvoidmain(Stringargs[])

{ComputerFrameframe;

frame=newComputerFrame("算术运算");//创建窗口,其标题为:

算术测试

}

}

9)右击“MainClass.java”,选择Runas—>JavaApplication命令,运行Java程序,其结果如图1所示:

图1

2、信号灯

1)进入Myeclipse8.5界面,依次选择File—>New—>JavaProject命令,打开新建项目向导,在“Projectname”栏中输入项目名“Jy001”,单击“Finish”按钮

2)右击项目“Jy001”,选择“New—>Package”,在“Name”栏中输入包名“org.circle”,单击“Finish”按钮完成包的创建

3)右击项目“Jy001”的包“org.circle”,选择“New—>Class”,在“Name”栏中输入类名“SignalMainClass”,单击“Finish”按钮完成类的创建

4)双击“SignalMainClass.java”,编辑以下代码:

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

classSignalCanvasextendsCanvas

{intred,green,yellow,x,y,r;

SignalCanvas()

{setBackground(Color.white);

}

publicvoidsetRed(intr)

{red=r;

}

publicvoidsetGreen(intg)

{green=g;

}

publicvoidsetYellow(inty)

{yellow=y;

}

publicvoidsetPosition(intx,inty)

{this.x=x;

this.y=y;

}

publicvoidsetRadius(intr)

{this.r=r;

}

publicvoidpaint(Graphicsg)

{if(red==1)

{g.setColor(Color.red);

}

elseif(green==1)

{g.setColor(Color.green);

}

elseif(yellow==1)

{g.setColor(Color.yellow);

}

g.fillOval(x,y,2*r,2*r);

}

}

classSignalFrameextendsFrameimplementsItemListener

{Choicechoice;

SignalCanvassignal=null;

StringitemRed="红灯",itemYellow="黄灯",itemGreen="绿灯";

publicSignalFrame()

{choice=choice=newChoice();//创建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{Classcs=Class.forName("SignalCanvas");

signal=(SignalCanvas)cs.newInstance();

add(signal,BorderLayout.CENTER);

}

catch(Exceptione)

{add(newLabel("您还没有编写SignalCanvas类"),BorderLayout.CENTER);

}

setBounds(100,100,360,300);

setVisible(true);

validate();

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

}

);

}

publicvoiditemStateChanged(ItemEvente)

{Stringitem=choice.getSelectedItem();//choice返回被选中的条目

intw=signal.getBounds().width;

inth=signal.getBounds().height;

intm=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();

}

}

elseif(item.equals(itemYellow))

{if(signal!

=null)

{signal.setRed(0);

signal.setYellow

(1);

signal.setGreen(0);

signal.setPosition(w/3,h/3);

signal.repaint();

}

}

elseif(item.equals(itemGreen))

{if(signal!

=null)

{signal.setRed(0);

signal.setYellow(0);

signal.setGreen

(1);

signal.setPosition(w/3,2*h/3);

signal.repaint();

}

}

}

}

publicclassSignalMainClass

{publicstaticvoidmain(Stringargs[])

{SignalFrameframe;

frame=newSignalFrame();

frame.setTitle("信号灯");

}

}

5)右击“SignalMainClass.java”,选择Runas—>JavaApplication命令,运行Java程序,其结果如图2所示:

图2

3、布局与日历

1)进入Myeclipse8.5界面,依次选择File—>New—>JavaProject命令,打开新建项目向导,在“Projectname”栏中输入项目名“Jy001”,单击“Finish”按钮

2)右击项目“Jy001”,选择“New—>Package”,在“Name”栏中输入包名“org.circle”,单击“Finish”按钮完成包的创建

3)右击项目“Jy001”的包“org.circle”,选择“New—>Class”,在“Name”栏中输入类名“CalendarBean”,单击“Finish”按钮完成类的创建

4)双击“CalendarBean.java”,编辑以下代码:

importjava.util.Calendar;

publicclassCalendarBean

{

Stringday[];

intyear=2005,month=0;

publicvoidsetYear(intyear)

{this.year=year;

}

publicintgetYear()

{returnyear;

}

publicvoidsetMonth(intmonth)

{this.month=month;

}

publicintgetMonth()

{returnmonth;

}

publicString[]getCalendar()

{Stringa[]=newString[42];

Calendar日历=Calendar.getInstance();

日历.set(year,month-1,1);

int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

intday=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(inti=星期几,n=1;i<星期几+day;i++)

{

a[i]=String.valueOf(n);

n++;

}

returna;

}

}

5)右击项目“Jy001”,选择“New—>Class”,在“Name”栏中输入类名“CalendarFrame”,单击“Finish”按钮完成类的创建

6)双击“CalendarFrame.java”,编辑以下代码:

importjava.util.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.*;

publicclassCalendarFrameextendsFrameimplementsActionListener

{LabellabelDay[]=newLabel[42];

ButtontitleName[]=newButton[7];

Stringname[]={"日","一","二","三","四","五","六"};

ButtonnextMonth,previousMonth;

intyear=2006,month=10;

CalendarBeancalendar;

LabelshowMessage=newLabel("",Label.CENTER);

publicCalendarFrame()

{PanelpCenter=newPanel();

pCenter.setLayout(newGridLayout(7,7));

//将pCenter的布局设置为7行7列的GridLayout布局。

for(inti=0;i<7;i++)

{titleName[i]=newButton(name[i]);

pCenter.add(titleName[i]);//pCenter添加组件titleName[i]。

}

for(inti=0;i<42;i++)

{

labelDay[i]=newLabel("",Label.CENTER);

pCenter.add(labelDay[i]);//pCenter添加组件labelDay[i]。

}

calendar=newCalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

Stringday[]=calendar.getCalendar();

for(inti=0;i<42;i++)

{labelDay[i].setText(day[i]);

}

nextMonth=newButton("下月");

previousMonth=newButton("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

PanelpNorth=newPanel(),

pSouth=newPanel();

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

showMessage.setText("日历:

"+calendar.getYear()+"年"+calendar.getMonth()+"月");

ScrollPanescrollPane=newScrollPane();

scrollPane.add(pCenter);

add(scrollPane,BorderLayout.CENTER);//窗口添加scrollPane在中心区域

add(pNorth,BorderLayout.NORTH);//窗口添加pNorth在北面区域

add(pSouth,BorderLayout.SOUTH);//窗口添加pSouth在南区域。

}

publicvoidactionPerformed(ActionEvente)

{if(e.getSource()==nextMonth)

{month=month+1;

if(month>12)

month=1;

calendar.setMonth(month);

Stringday[]=calendar.getCalendar();

for(inti=0;i<42;i++)

{labelDay[i].setText(day[i]);

}

}

elseif(e.getSource()==prev

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1