JAVA综合图形界面程序的设计说明.docx
- 文档编号:7720984
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:111.48KB
JAVA综合图形界面程序的设计说明.docx
《JAVA综合图形界面程序的设计说明.docx》由会员分享,可在线阅读,更多相关《JAVA综合图形界面程序的设计说明.docx(13页珍藏版)》请在冰豆网上搜索。
JAVA综合图形界面程序的设计说明
实验报告
(2013/2014学年第二学期)
课程名称
Java语言程序设计
实验名称
综合图形界面程序设计
实验时间
2014年5月5日
指导单位
计算机学院软件教学中心
指导教师
薛景
学生姓名
周媛
班级学号
12001108
学院(系)
计算机学院
专业
计算机科学与技术
(信息安全)
实验名称
综合图形界面程序设计
指导教师
薛景
实验类型
上机
实验学时
2
实验时间
2014-5-5
一、实验目的
1.学习使用JavaSwing设计GUI界面
2.学习Java的事件监听机制的基本原理
3.学习监听器处理Java中的事件
二、实验环境
1.每位同学配备实验计算机一台
2.安装JDK和Eclipse
三、实验内容
1、编写一个算数测试小软件,用来训练小学生的算数能力。
程序有3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确;ComputerFrame对象负责为算数题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是软件的主类。
(请在下方空白处填写本程序的全部程序代码及软件界面截图)
publicclassMainclass{
publicstaticvoidmain(Stringargs[]){
ComputerFrameframe;
frame=newComputerFrame();
frame.setTitle("算术测试");
frame.setBounds(100,100,650,180);
}
}
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);
textOne=newJTextField(5);//创建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(newJLabel("="));
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);
getProblem.addActionListener(teacherZhang);
giveAnswer.addActionListener(teacherZhang);
textResult.addActionListener(teacherZhang);
setVisible(true);
validate();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
}
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=textResul.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];
}
}
2、编写一个简单的计算器软件,实现简单的四则运算。
(请在下方空白处填写本程序的全部程序代码及软件界面截图)
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsJFrame{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;//计算结果显示区
privateStringlastCommand;
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
publicCalculator(){
super("Calculator");
container=getContentPane();
layout=newGridBagLayout();
container.setLayout(layout);
constraints=newGridBagConstraints();
start=true;
result=0;
lastCommand="=";
displayField=newJTextField(20);
displayField.setHorizontalAlignment(JTextField.RIGHT);
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=4;
constraints.gridheight=1;
constraints.fill=GridBagConstraints.BOTH;
constraints.weightx=100;
constraints.weighty=100;
layout.setConstraints(displayField,constraints);
container.add(displayField);
ActionListenerinsert=newInsertAction();
ActionListenercommand=newCommandAction();
addButton("7",0,2,1,1,insert);
addButton("8",1,2,1,1,insert);
addButton("9",2,2,1,1,insert);
addButton("/",3,2,1,1,command);
addButton("4",0,3,1,1,insert);
addButton("5",1,3,1,1,insert);
addButton("6",2,3,1,1,insert);
addButton("*",3,3,1,1,command);
addButton("1",0,4,1,1,insert);
addButton("2",1,4,1,1,insert);
addButton("3",2,4,1,1,insert);
addButton("-",3,4,1,1,command);
addButton("0",0,5,1,1,insert);
addButton(".",2,5,1,1,insert);
addButton("+",3,5,1,1,command);
addButton("=",0,6,4,1,command);
this.setResizable(false);
setSize(180,200);
setVisible(true);
}
privatevoidaddButton(Stringlabel,introw,intcolumn,intwith,
intheight,ActionListenerlistener){
JButtonbutton=newJButton(label);
constraints.gridx=row;
constraints.gridy=column;
constraints.gridwidth=with;
constraints.gridheight=height;
constraints.fill=GridBagConstraints.BOTH;
button.addActionListener(listener);
layout.setConstraints(button,constraints);
container.add(button);
}
privateclassInsertActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
Stringinput=event.getActionCommand();
if(start){
displayField.setText("");
start=false;
if(input.equals("+/-"))
displayField.setText(displayField.getText()+"-");
}
if(!
input.equals("+/-")){
if(input.equals("Backspace")){
Stringstr=displayField.getText();
if(str.length()>0)
displayField
.setText(str.substring(0,str.length()-1));
}
elseif(input.equals("CE")||input.equals("C")){
displayField.setText("0");
start=true;
}else
displayField.setText(displayField.getText()+input);
}
}
}
privateclassCommandActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevt){
Stringcommand=evt.getActionCommand();
if(start){
lastCommand=command;
}
else{
calculate(Double.parseDouble(displayField.getText()));
lastCommand=command;
start=true;
}
}
}
publicvoidcalculate(doublex){
if(lastCommand.equals("+"))
result+=x;
elseif(lastCommand.equals("-"))
result-=x;
elseif(lastCommand.equals("*"))
result*=x;
elseif(lastCommand.equals("/"))
result/=x;
elseif(lastCommand.equals("="))
result=x;
displayField.setText(""+result);
}
publicstaticvoidmain(String[]args){
Calculatorcalculator=newCalculator();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
3、使用JavaSwing中的各个组件,编写一个自定义的软件界面,例如:
学生成绩管理系统、图书馆管理系统、人事管理系统等等(请在下方空白处填写本程序的全部程序代码及软件界面截图)
importjavax.swing.*;
publicclassProgram{
publicstaticvoidmain(Stringargs[]){
WindowBoxLayoutwin=
newWindowBoxLayout();
win.setBounds(100,100,310,260);
win.setTitle("学生成绩管理系统");
}
}
classWindowBoxLayoutextendsJFrame{
BoxbaseBox,boxV1,boxV2;
WindowBoxLayout(){
setLayout(newjava.awt.FlowLayout());
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
voidinit(){
boxV1=Box.createVerticalBox();
boxV1.add(newJLabel("学生姓名"));
boxV1.add(Box.createVerticalStrut(8));
boxV1.add(newJLabel("密码"));
boxV2=Box.createVerticalBox();
boxV2.add(newJTextField(10));
boxV2.add(Box.createVerticalStrut(8));
boxV2.add(newJPasswordField(10));
baseBox=Box.createHorizontalBox();
baseBox.add(boxV1);
baseBox.add(Box.createHorizontalStrut(10));
baseBox.add(boxV2);
add(baseBox);
}
}
四、实验小结(包括问题和解决方法、心得体会等)
这次课程设计能够顺利的完成,要感谢老师的教导和同学的无私的帮助。
首先是薛景老师,为我的设计改进提供了很多宝贵的意见,还有和同学一起讨论帮我解决了几个错误,老师上课时讲得详细并严格要求我们,为我们的实验起了促进作用。
在此对老师和给予我帮助的同学表示最诚挚的感谢!
五、指导教师评语
成绩
批阅人
日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 综合 图形界面 程序 设计 说明