组件与事件处理及编程.docx

上传人:b****1 文档编号:23287796 上传时间:2023-05-15 格式:DOCX 页数:36 大小:226.38KB
下载 相关 举报
组件与事件处理及编程.docx_第1页
第1页 / 共36页
组件与事件处理及编程.docx_第2页
第2页 / 共36页
组件与事件处理及编程.docx_第3页
第3页 / 共36页
组件与事件处理及编程.docx_第4页
第4页 / 共36页
组件与事件处理及编程.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

组件与事件处理及编程.docx

《组件与事件处理及编程.docx》由会员分享,可在线阅读,更多相关《组件与事件处理及编程.docx(36页珍藏版)》请在冰豆网上搜索。

组件与事件处理及编程.docx

组件与事件处理及编程

甘肃政法学院

 

本科学生实验报告

(三)

 

姓名刘倚帆学院计算机科学学院

专业计算机科学与技术班级12级专升本班

实验课程名称Java程序设计

试验时间2012年10月23日

指导教师及职称李瑞生

实验成绩

开课时间2012—2013学年第一学期

 

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

实验题目

组件与事件处理

(1)

组件与事件编程

(2)

小组合作

姓名

班级

学号

一、实验目的:

组件与事件处理

(1)

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

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

组件与事件编程

(2)

掌握package语句与import语句的用法。

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

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

二、实验要求:

∙复习理论教学中所学的内容。

∙认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

∙认真总结实验并书写实验报告。

三、实验环境:

安装有JDK1.6,Eclipse的计算机。

四、实验内容与步骤:

组件与事件处理

(1)

1、算术测试:

请读懂下面模板程序,将其补充完整并调试运行。

Teacher.java

package实验3_1_1;

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;

}

}

ComputerFrame.java

package实验3_1_1;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.JTextField;

@SuppressWarnings("serial")

publicclassComputerFrameextendsFrameimplementsActionListener

{JTextFieldtextOne;

JTextFieldtextTwo;

JTextFieldtextResult;

ButtongetProblem,giveAnwser;

LabeloperatorLabel,message;

Teacherteacher;

ComputerFrame(Strings)

{super(s);

teacher=newTeacher();

setLayout(newFlowLayout());

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

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

textResult=newJTextField(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.giveOperator();

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

}

}

MainClass.java

package实验3_1_1;

publicclassMainClass

{@SuppressWarnings("unused")

publicstaticvoidmain(Stringargs[])

{ComputerFrameframe;

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

算术测试

}

}

运行结果:

2、信号灯:

请读懂下面模板程序,将其补充完整并调试运行。

SignalCanvas.java

package实验3_1_2;

importjava.awt.*;

@SuppressWarnings("serial")

publicclassSignalCanvasextendsCanvas

{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);

}

}

SignalFrame.java

package实验3_1_2;

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

@SuppressWarnings({"serial","unused"})

publicclassSignalFrameextendsFrameimplementsItemListener

{Choicechoice;

SignalCanvassignal=null;

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

@SuppressWarnings("rawtypes")

publicSignalFrame()

{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();

}

}

}

}

SignalMainClass.java

package实验3_1_2;

publicclassSignalMainClass

{publicstaticvoidmain(Stringargs[])

{SignalFrameframe;

frame=newSignalFrame();

frame.setTitle("信号灯");

}

}

运行结果:

3、布局与日历:

请读懂下面模板程序,将其补充完整并调试运行。

CalendarBean.java

package实验3_1_3;

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;

}

}

CalendarFrame.java

package实验3_1_3;

importjava.util.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.*;

@SuppressWarnings({"serial","unused"})

publicclassCalendarFrameextendsFrameimplementsActionListener

{LabellabelDay[]=newLabel[42];

ButtontitleName[]=newButton[7];

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

ButtonnextMonth,previousMonth;

intyear=2012,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(scrollPane,BorderLayout.CENTER);//窗口添加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()==previousMonth)

{month=month-1;

if(month<1)

month=12;

calendar.setMonth(month);

Stringday[]=calendar.getCalendar();

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

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

}

}

showMessage.setText("日历:

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

}

}

CalendarMainClass.java

package实验3_1_3;

publicclassCalendarMainClass

{publicstaticvoidmain(Stringargs[])

{CalendarFrameframe=newCalendarFrame();

frame.setBounds(100,100,360,300);

frame.setVisible(true);

frame.validate();

frame.addWindowListener(newjava.awt.event.WindowAdapter()

{publicvoidwindowClosing(java.awt.event.WindowEvente)

{System.exit(0);

}

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

当前位置:首页 > 党团工作 > 其它

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

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