Java程序设计试验6学生版汇编.docx

上传人:b****6 文档编号:6303738 上传时间:2023-01-05 格式:DOCX 页数:30 大小:24.26KB
下载 相关 举报
Java程序设计试验6学生版汇编.docx_第1页
第1页 / 共30页
Java程序设计试验6学生版汇编.docx_第2页
第2页 / 共30页
Java程序设计试验6学生版汇编.docx_第3页
第3页 / 共30页
Java程序设计试验6学生版汇编.docx_第4页
第4页 / 共30页
Java程序设计试验6学生版汇编.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

Java程序设计试验6学生版汇编.docx

《Java程序设计试验6学生版汇编.docx》由会员分享,可在线阅读,更多相关《Java程序设计试验6学生版汇编.docx(30页珍藏版)》请在冰豆网上搜索。

Java程序设计试验6学生版汇编.docx

Java程序设计试验6学生版汇编

 

华北电力大学

实验报告

|

|

 

实验名称Application及Applet程序设计

课程名称Java程序设计

|

|

专业班级:

学生姓名:

学号:

成绩:

指导教师:

张学斌实验日期:

 

一、实验目的和要求

1掌握JavaSwing组件的使用方法;

2理解委托代理事件处理模型掌握;

3掌握窗口菜单和快捷菜单设计方式;

4掌握在组件上绘图的方法;

5掌握Applet应用程序的设计方法

二、实验环境

Windows2000/WindowsXP,JDK1.2~1.6

三、实验内容和步骤

要求按照实验内容,写出详细实验过程和步骤,必要时截图。

实验1算术测试

1.实验要求

编写一个算术测试小软件,用来训练小学生的算术能力。

程序有三个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过GUI界面给出题目的答案;MailClass是软件的主类。

2.程序模板

MainClass.java

publicclassMainClass{

publicstaticvoidmain(Stringargs[]){

ComputerFrameframe;

frame=newComputerFrame();

frame.setTitle("算术测试");

frame.setBounds(100,100,650,180);

}

}

ComputerFrame.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassComputerFrameextendsJFrame{

JMenuBarmenubar;

JMenuchoiceGrade;//选择级别的菜单

JMenuItemgrade1,grade2;

JTextFieldtextOne,textTwo,textResult;

JButtongetProblem,giveAnwser;

JLabeloperatorLabel,message;

TeacherteacherZhang;

ComputerFrame(){

teacherZhang=newTeacher();

teacherZhang.setMaxInteger(20);

setLayout(newFlowLayout());

menubar=newJMenuBar();

choiceGrade=newJMenu("选择级别");

grade1=newJMenuItem("幼儿级别");

grade2=newJMenuItem("儿童级别");

grade1.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

teacherZhang.setMaxInteger(10);

}

});

grade2.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

teacherZhang.setMaxInteger(50);

}

});

choiceGrade.add(grade1);

choiceGrade.add(grade2);

menubar.add(choiceGrade);

setJMenuBar(menubar);

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

textTwo=newJTextField(5);

textResult=newJTextField(5);

operatorLabel=newJLabel("+");

operatorLabel.setFont(newFont("Arial",Font.BOLD,20));

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

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

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

add(getProblem);

add(textOne);

add(operatorLabel);

add(textTwo);

add(newJLabel("="));

add(textResult);

add(giveAnwser);

add(message);

textResult.requestFocus();

textOne.setEditable(false);

textTwo.setEditable(false);

getProblem.setActionCommand("getProblem");

textResult.setActionCommand("answer");

giveAnwser.setActionCommand("answer");

teacherZhang.setJTextField(textOne,textTwo,textResult);

teacherZhang.setJLabel(operatorLabel,message);

【代码2】//将teacherZhang注册为getProblem的ActionEvent事件监视器

【代码3】//将teacherZhang注册为giveAnwser的ActionEvent事件监视器

【代码4】//将teacherZhang注册为textResult的ActionEvent事件监视器

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

}

Techaer.java

importjava.util.Random;

importjava.awt.event.*;

importjavax.swing.*;

publicclassTeacherimplementsActionListener{

intnumberOne,numberTwo;

Stringoperator="";

booleanisRight;

Randomrandom;//用于给出随机数

intmaxInteger;//题目中最大的整数

JTextFieldtextOne,textTwo,textResult;

JLabeloperatorLabel,message;

Teacher(){

random=newRandom();

}

publicvoidsetMaxInteger(intn){

maxInteger=n;

}

publicvoidactionPerformed(ActionEvente){

Stringstr=e.getActionCommand();

if(str.equals("getProblem")){

numberOne=random.nextInt(maxInteger)+1;//1至maxInteger之间的随机数;

numberTwo=random.nextInt(maxInteger)+1;

doubled=Math.random();//获取(0,1)之间的随机数

if(d>=0.5)

operator="+";

else

operator="-";

textOne.setText(""+numberOne);

textTwo.setText(""+numberTwo);

operatorLabel.setText(operator);

message.setText("请回答");

textResult.setText(null);

}

elseif(str.equals("answer")){

Stringanswer=textResult.getText();

try{intresult=Integer.parseInt(answer);

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

if(result==numberOne+numberTwo)

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

else

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

}

elseif(operator.equals("-")){

if(result==numberOne-numberTwo)

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

else

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

}

}

catch(NumberFormatExceptionex){

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

}

}

}

publicvoidsetJTextField(JTextField...t){

textOne=t[0];

textTwo=t[1];

textResult=t[2];

}

publicvoidsetJLabel(JLabel...label){

operatorLabel=label[0];

message=label[1];

}

}

3.实验指导

Jbutton对象可触发ActionEvent事件。

为了能监视到此类事件,事件源必须使用addActionListener方法获得监视器,创建监视器的类必须实现接口ActionListener。

4.实验扩展

(1)模仿本实验代码,再增加“小学生”级别。

(2)给出上述程序增加测试乘法的功能。

实验2布局与日历

1.实验要求

编写一个应用程序,有一个窗口,该窗口的布局为BorderLayout布局。

窗口的中心添加一个JPanel容器pCenter,pCenter的布局是7行7列的GriderLayout布局,pCenter中放置49个标签,用来显示日历。

窗口的北面添加一个JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:

nextMonth和previousMonth。

单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一月的日历;窗口的南面添加一个Jpanel容器pSouth,其布局是FlowLayout布局,pSouth中放置一个标签用来显示一些信息。

2.程序模板

CalendarMainClass.java

publicclassCalendarMainClass{

publicstaticvoidmain(Stringargs[]){

CalendarFrameframe=newCalendarFrame();

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

frame.setVisible(true);

frame.setYearAndMonth(2015,5);

}

}

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;

}

}

CalendarFrame.java

importjava.util.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.border.*;

publicclassCalendarFrameextendsJFrameimplementsActionListener{

JLabellabelDay[]=newJLabel[42];

JButtontitleName[]=newJButton[7];

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

JButtonnextMonth,previousMonth;

CalendarBeancalendar;

JLabelshowMessage=newJLabel("",JLabel.CENTER);

intyear=2011,month=2;

publicCalendarFrame(){

JPanelpCenter=newJPanel();

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

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

titleName[i]=newJButton(name[i]);

titleName[i].setBorder(newSoftBevelBorder(BevelBorder.RAISED));

pCenter.add(titleName[i]);

}

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

labelDay[i]=newJLabel("",JLabel.CENTER);

labelDay[i].setBorder(newSoftBevelBorder(BevelBorder.LOWERED));

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

}

calendar=newCalendarBean();

nextMonth=newJButton("下月");

previousMonth=newJButton("上月");

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

JPanelpNorth=newJPanel(),

pSouth=newJPanel();

pNorth.add(previousMonth);

pNorth.add(nextMonth);

pSouth.add(showMessage);

add(pCenter,BorderLayout.CENTER);

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

【代码4】//窗口添加pSouth在南区域。

setYearAndMonth(year,month);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

publicvoidsetYearAndMonth(inty,intm){

calendar.setYear(y);

calendar.setMonth(m);

Stringday[]=calendar.getCalendar();

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

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

showMessage.setText("日历:

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

}

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()+"月");

}

}

3.实验扩展

在CalendarFrame类中增加一个JTextField文本框,用户可以通过在文本框中输入年份来修改calendar对象的int成员year

实验3英语单词拼写训练

1.实验要求

编写一个应用程序,要求如下:

●窗口有一个TextField对象和一个按钮对象,将这两个对象添加到一个面板中,然后将该面板添加到窗口的上面。

●用户在TextField对象中输入一个英文单词,然后按Enter或单击“确定”按钮,程序将创建若干个不可编辑的文本框,每个文本框随机显示英文单词中的一个字母。

要求将这些文本框按一行添加到一个面板中,然后将该面板添加到窗口的中心。

●用户用鼠标单击一个文本框后,通过按下键盘上的“←”和“→”键交换相邻文本框中的字母,使得这些文本框中的字母的排列顺序和英文单词中字母的顺序相同。

2.程序模板

WordMainClass.java

publicclassWordMainClass{

publicstaticvoidmain(Stringargs[]){

newSpellingWordFrame();

}

}

-------------------------------------------------------------------------------------------------

RondomString.java

publicclassRondomString{//负责随机排列单词中的字母

Stringstr="";

publicStringgetRondomString(Strings){

StringBufferstrBuffer=newStringBuffer(s);

intm=strBuffer.length();

for(intk=0;k

intindex=(int)(Math.random()*strBuffer.length());//Math.random()返回(0,1)之间的随机数

charc=strBuffer.charAt(index);

str=str+c;

strBuffer=strBuffer.deleteCharAt(index);

}

returnstr;

}

}

----------------------------------------------------------------------------------------------------------------

LetterLabel.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassLetterLabelextendsJTextFieldimplementsFocusListener{

LetterLabel(){

setEditable(false);

addFocusListener(this);//【代码1】//将当前对象注册为自身的焦点视器

setBackground(Color.white);

setFont(newFont("Arial",Font.PLAIN,30));

}

publicstaticLetterLabel[]getLetterLabel(intn){

LetterLabela[]=newLetterLabel[n];

for(intk=0;k

a[k]=newLetterLabel();

returna;

}

publicvoidfocusGained(FocusEvente){

setBackground(Color.cyan);

}

publicvoidfocusLost(FocusEvente){

setBackground(Color.white);

}

publicvoidsetText(charc){

setText(""+c);

}

}

-------------

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

当前位置:首页 > 解决方案 > 学习计划

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

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