java实验 JAVA Swing 图形用户界面和对话框

2019-03-16 11:03

JAVA实验报告

课程名称 java实验 实验名称 JAVA Swing 图形用户界面和对话框

学 院__计算机学院__ 专业班级__软件 __ 姓 名__ ____ 学号_ __实验日期:2015年4月30 日

一.实验目的

(1) 学习处理ActionEven事件; (2) 学习使用布局类;

(3) 学习焦点、鼠标和键盘事件; (4) 学习使用对话框。

二.实验内容

(-)实验题目一:算术测试 ,编写一个算术测试小软件,用来训练小学生的算术能力。

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

package 算术测试;

public class MainClass {

public static void main(String args[]){ ComputerFrame frame;

frame=new ComputerFrame(); frame.setTitle(\算术测试\);

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

package 算术测试; import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ComputerFrame extends JFrame {

1

JMenuBar menubar; JMenu choiceGrade;

JMenuItem grade1,grade2;

JTextField textOne,textTwo,textResult; JButton getProblem,giveAnswer; JLabel operatorLabel,message; Teacher teacherZhang; ComputerFrame(){

teacherZhang=new Teacher();

teacherZhang.setMaxInteger(20); setLayout(new FlowLayout()); menubar=new JMenuBar();

choiceGrade=new JMenu(\选择级别\); grade1=new JMenuItem(\幼儿级别\); grade2=new JMenuItem(\儿童级别\);

grade1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ teacherZhang.setMaxInteger(10); }

});

grade2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){ teacherZhang.setMaxInteger(50); } });

choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade); setJMenuBar(menubar);

textOne=new JTextField(5);//创建文本框,其可见字符长为5 textTwo=new JTextField(5); textResult=new JTextField(5); operatorLabel=new JLabel(\);

operatorLabel.setFont(new Font(\,Font.BOLD,20)); message=new JLabel(\你还没有回答呢\); getProblem=new JButton(\获取题目\); giveAnswer=new JButton(\确认答案\); add(getProblem); add(textOne);

add(operatorLabel); add(textTwo);

add(new JLabel(\)); add(textResult);

2

add(giveAnswer); add(message);

textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false);

getProblem.setActionCommand(\); textResult.setActionCommand(\); giveAnswer.setActionCommand(\);

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

package 算术测试;

import java.util.Random; import java.awt.event.*; import javax.swing.*;

public class Teacher implements ActionListener{ int numberOne,numberTwo; String operator=\; boolean isRigth; Random random; int maxInteger;

JTextField textOne,textTwo,textResult; JLabel operatorLabel,message; Teacher(){

random=new Random(); }

public void setMaxInteger(int n){ maxInteger=n; }

public void actionPerformed(ActionEvent e){ String str=e.getActionCommand(); if(str.equals(\)){

numberOne=random.nextInt(maxInteger)+1;//1~最大整数之间的随机数

numberTwo=random.nextInt(maxInteger)+1; double d=Math.random();//获取0~1之间的随机数

3

if(d>=0.5)

operator=\; else

operator=\;

textOne.setText(\+numberOne); textTwo.setText(\+numberTwo); operatorLabel.setText(operator); message.setText(\请回答\); textResult.setText(null); }

else if(str.equals(\)){

String answer=textResult.getText(); try{

int result=Integer.parseInt(answer); if(operator.equals(\)){

if(result==numberOne+numberTwo) message.setText(\你回答正确\); else

message.setText(\你回答错误\); }

else if(operator.equals(\)){

if(result==numberOne-numberTwo) message.setText(\你回答正确\); else

message.setText(\你回答错误\); } }

catch(NumberFormatException ex){

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

public void setJTextField(JTextField... t){ textOne=t[0]; textTwo=t[1]; textResult=t[2]; }

public void setJLabel(JLabel...label){ operatorLabel=label[0]; message=label[1]; } }

4

3.实验结果:

4.实验后练习:

(1)模仿本实验的代码,再增加小学生级别。 (2)给上述程序增加测试乘法的功能。 (二)实验题目二: 布局与日历。

1.要点分析: 设置一个窗口,该窗口的布局为BorderLayout布局。窗口的中心添加一个JPanel容器pCenter,pCenter的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月日历;单击previousMonth按钮,可以显示当前月的上一月的日历。 2.程序源代码:

package 布局与日历;

public class CalendarMainClass {

public static void main(String args[]){

CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true);

frame.setYearAndMonth(2015,5); } }

package 布局与日历; import java.util.*; import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

5


java实验 JAVA Swing 图形用户界面和对话框.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《软件工程》实验指导书(实验一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: