Java实验项目三组件与事件编程第1部分.docx

上传人:b****7 文档编号:11200077 上传时间:2023-02-25 格式:DOCX 页数:16 大小:18.30KB
下载 相关 举报
Java实验项目三组件与事件编程第1部分.docx_第1页
第1页 / 共16页
Java实验项目三组件与事件编程第1部分.docx_第2页
第2页 / 共16页
Java实验项目三组件与事件编程第1部分.docx_第3页
第3页 / 共16页
Java实验项目三组件与事件编程第1部分.docx_第4页
第4页 / 共16页
Java实验项目三组件与事件编程第1部分.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Java实验项目三组件与事件编程第1部分.docx

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

Java实验项目三组件与事件编程第1部分.docx

Java实验项目三组件与事件编程第1部分

Java实验项目三组件与事件编程

第1部分组件与事件处理

[实验目的]

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

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

[实验要求]

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

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

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

[实验课时]2学时

[实验教学方式]学生上机实验,教师随堂指导。

[实验内容]

1、算术测试:

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

importjava.awt.*;

importjava.awt.event.*;

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;

}

}

publicclassComputerFrameextendsFrameimplementsActionListener

{TextFieldtextOne,textTwo,textResult;

ButtongetProblem,giveAnwser;

LabeloperatorLabel,message;

Teacherteacher;

ComputerFrame(Strings)

{super(s);

teacher=newTeacher();

setLayout(newFlowLayout());

textOne=【代码1】//创建textOne,其可见字符长是10

textTwo=【代码2】//创建textTwo,其可见字符长是10

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

【代码4】//将当前窗口注册为getProblem的ActionEvent事件监视器

【代码5】//将当前窗口注册为giveAnwser的ActionEvent事件监视器

【代码6】//将当前窗口注册为textResult的ActionEvent事件监视器

setBounds(100,100,450,100);

setVisible(true);

validate();

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

}

);

}

publicvoidactionPerformed(ActionEvente)

{if(【代码7】)//判断事件源是否是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(【代码8】)//判断事件源是否是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();

}

}

publicclassMainClass

{publicstaticvoidmain(Stringargs[])

{ComputerFrameframe;

frame=【代码9】//创建窗口,其标题为:

算术测试

}

}

2、信号灯:

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

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

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

}

}

publicclassSignalFrameextendsFrameimplementsItemListener

{Choicechoice;

SignalCanvassignal=null;

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

publicSignalFrame()

{choice=【代码1】//创建choice

【代码2】//创建choice添加itemRed

【代码3】//创建choice添加itemYellow

【代码4】//创建choice添加itemGreen

【代码5】//将当前窗口注册为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=【代码6】//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("信号灯");

}

}

3、布局与日历:

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

importjava.util.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.*;

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;

}

}

publicclassCalendarFrameextendsFrameimplementsActionListener

{LabellabelDay[]=newLabel[42];

ButtontitleName[]=newButton[7];

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

ButtonnextMonth,previousMonth;

intyear=2006,month=10;

CalendarBeancalendar;

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

publicCalendarFrame()

{PanelpCenter=newPanel();

【代码1】//将pCenter的布局设置为7行7列的GridLayout布局。

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

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

【代码2】//pCenter添加组件titleName[i]。

}

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

{

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

【代码3】//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);

【代码4】//窗口添加scrollPane在中心区域

【代码5】//窗口添加pNorth在北面区域

【代码6】//窗口添加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()+"月");

}

}

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

}

}

);

}

}

[参考程序]

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

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

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

getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器

giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器

textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器

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

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

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

算术测试

2.choice=newChoice();//创建choice

choice.add(itemRed);//创建choice添加itemRed

choice.add(itemYellow);//创建choice添加itemYellow

choice.add(itemGreen);//创建choice添加itemGreen

choice.addItemListener(this);//将当前窗口注册为choice的ItemEvent事件监视器

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

3、【代码1】:

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

【代码2】:

pCenter.add(titleName[i]);

【代码3】:

pCenter.add(labelDay[i]);

【代码4】:

add(scrollPane,BorderLayout.CENTER);

【代码5】:

add(pNorth,BorderLayout.NORTH);

【代码6】:

add(pSouth,BorderLayout.SOUTH);

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

当前位置:首页 > PPT模板 > 其它模板

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

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