实验八 图形用户界面与对话框.docx
- 文档编号:18337678
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:34
- 大小:33.54KB
实验八 图形用户界面与对话框.docx
《实验八 图形用户界面与对话框.docx》由会员分享,可在线阅读,更多相关《实验八 图形用户界面与对话框.docx(34页珍藏版)》请在冰点文库上搜索。
实验八图形用户界面与对话框
实验八图形用户界面与对话框
1.实验目的
1、学会处理ActionEvent事件
2、学会使用布局类
3、学习焦点、鼠标和键盘事件
4、学习使用输入和消息对话框
2.实验内容
1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。
1)实验1算术测试
2)实验2布局与日历
3)实验3华容道
4)实验4字体对话框
5)实验5计算平方根
6)实验6简易计算器
2、设计编写程序完成以下任务。
1)修改实验1的代码,再增加“小学生”级别,并增加测试乘、除法的功能。
2)编写一个应用程序,用户可以在一个文本框里输入数字字符,按Enter键后将数字放入一个文本区。
当输入的数字大于1000时,弹出一个有模式的对话框,提示用户数字已经大于1000,是否继续将该数字放入文本区。
3)编写应用程序,有一个标题为“移动”的窗口,窗口布局为null,在窗口中有两个按钮,单击一个按钮让另一个按钮移动。
4)仿照操作系统中的简易计算机,自行设计一个能进行加减乘除运算的计算器。
需要考虑先进性乘除运算再进行加减运算。
3.实验步骤
略
4.评分标准
1.A——内容功能完善,编程风格好,人机接口界面好;
2.B——内容功能完善,编程风格良好,人机接口界面良好;
3.C——完成必做内容;
4.D——能完成必做内容;
5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).
参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。
(压缩包的文件名为:
学号后三位和名字开头字母,如109zhh.RAR|ZIP)
附录:
实验1算术测试
模板代码
Teacher.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;
numberTwo=random.nextInt(maxInteger)+1;
doubled=Math.random();
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];
}
}
ComputerFrame.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassComputerFrameextendsJFrame{
JMenuBarmenubar;
JMenuchoiceGrade;
JMenuItemgrade1,grade2;
JTextFieldtextOne,textTwo,textResult;
JButtongetProblem,giveAnswer;
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("获取题目");
giveAnswer=newJButton("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(newLabel("="));
add(textResult);
add(giveAnswer);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.setActionCommand("getProblem");
textResult.setActionCommand("answer");
giveAnswer.setActionCommand("answer");
teacherZhang.setJTextField(textOne,textTwo,textResult);
teacherZhang.setJLabel(operatorLabel,message);
//【代码2】//将teacherZhang注册为getProblem的ActionEvent事件监视器
//【代码3】//将teacherZhang注册为giveAnswer的ActionEvent事件监视器
//【代码4】//将teacherZhang注册为textResult的ActionEvent事件监视器
setVisible(true);
validate();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
}
MainClass.java
publicclassMainClass{
publicstaticvoidmain(String[]args){
ComputerFrameframe;
frame=newComputerFrame();
frame.setTitle("算术测试");
frame.setBounds(100,100,650,180);
}
}
实验2布局与日历
模板代码
CalendarBean.java
importjava.util.Calendar;
publicclassCalendarBean{
String[]day;
intyear=2008,month=0;
publicintgetYear(){
returnyear;
}
publicvoidsetYear(intyear){
this.year=year;
}
publicintgetMonth(){
returnmonth;
}
publicvoidsetMonth(intmonth){
this.month=month;
}
publicString[]getCalendar(){
String[]a=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.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.awt.*;
importjava.util.*;
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));
//【代码2】//pCenter中添加组件titleName[i]
}
for(inti=0;i<42;i++){
labelDay[i]=newJLabel("",JLabel.CENTER);
labelDay[i].setBorder(newSoftBevelBorder(BevelBorder.LOWERED));
//【代码3】//pCenter中添加组件labelDay[i]
}
calendar=newCalendarBean();
nextMonth=newJButton("下月");
previousMonth=newJButton("上月");
nextMonth.addActionListener(this);
previousMonth.addActionListener(this);
JPanelpNoth=newJPanel()
pSouth=newJPanel();
pNoth.add(previousMonth);
pNoth.add(nextMonth);
pSouth.add(showMessage);
//【代码4】//将窗口pCenter添加到中央区域
//【代码5】//将窗口pNoth添加到北面区域
//【代码6】//将窗口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.month+"月");
}
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.month+"月");
}
}
CalendarMainClass.java
publicclassCalendarMainClass{
publicstaticvoidmain(String[]args){
CalendarFrameframe=newCalendarFrame();
frame.setBounds(100,100,360,300);
frame.setVisible(true);
frame.setYearAndMonth(2013,5);
}
}
实验3华容道
模板代码
MainClassHRR.java
publicclassMainClassHRR{
publicstaticvoidmain(String[]args){
{Hua_Rong_RoadHRR=newHua_Rong_Road();
}
}
}
Person.java
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
publicclassPersonextendsJButtonimplementsFocusListener{
intnumber;
Colorc=newColor(255,245,170);
Fontfont=newFont("宋体",Font.BOLD,12);
Person(intnumber,Strings)
{super(s);
setBackground(c);
setFont(font);
this.number=number;
c=getBackground();
addFocusListener(this);
}
publicvoidfocusGained(FocusEvente)
{setBackground(Color.red);
}
publicvoidfocusLost(FocusEvente)
{setBackground(c);
}
}
Hua_Rong_Road.java
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
publicclassHua_Rong_RoadextendsJFrameimplementsMouseListener,
KeyListener,ActionListener{
Personperson[]=newPerson[10];
JButtonleft,right,above,below;
JButtonrestart=newJButton("重新开始");
publicHua_Rong_Road()
{init();
setBounds(100,100,320,360);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
validate();
}
publicvoidinit()
{setLayout(null);
add(restart);
restart.setBounds(100,320,120,25);
restart.addActionListener(this);
Stringname[]={"曹操","关羽","张","刘","周","黄","兵","兵","兵","兵"};
for(intk=0;k {person[k]=newPerson(k,name[k]); person[k].addMouseListener(this); person[k].addKeyListener(this); add(person[k]); } person[0].setBounds(104,54,100,100); person[1].setBounds(104,154,100,50); person[2].setBounds(54,154,50,100); person[3].setBounds(204,154,50,100); person[4].setBounds(54,54,50,100); person[5].setBounds(204,54,50,100); person[6].setBounds(54,254,50,50); person[7].setBounds(204,254,50,50); person[8].setBounds(104,204,50,50); person[9].setBounds(154,204,50,50); person[9].requestFocus(); left=newJBut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验八 图形用户界面与对话框 实验 图形 用户界面 对话框