欢迎光临散文网 会员登陆 & 注册

Java——实验14 图形用户界面设计(1)

2023-01-16 14:29 作者:沐笙--ms  | 我要投稿

1.实验目的

掌握处理ActionEvent事件。

2.实验介绍

处理事件时,要很好地掌握事件源、监视器、处理事件的接口之间的关系。事件源是能够产生事件的对象,如文本框、按钮、下扣式列表等。事件源通过调用相应的方法将某个对象作为自己的监视器,事件源增加监视的方法addXXXListener(XXXListenerlistener)中的参数是一个接口,listener可以引用任何实现了该接口的装所创建的对象做为事件源的监视器,当事件源发生事件时,接口listener立即调用被类实现的接口中的某个方法,即监视器负责处理事件源发生的事件。

3.实验内容

编写一个算术测试小软件,用来训练小学生的算术能力。程序由3 个类组成,其中Teacher对象充当监视器,负责给出算术题比 并判断回答者的答案是否正确;ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUl界面给出题目的答案;MailClass是软件的主类。

实验代码

ComputerFrame.java

package text14;

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

public class ComputerFrame extends JFrame {

JMenuBar menubar;

JMenu choiceGrade;

JMenuItem grade1, grade2,grade3;

JTextField textOne, textTwo, textResult;

JButton getProblem, giveAnswer;

JLabel operatorLabel, message;

Teacher teacherzhang;

 

ComputerFrame() {

teacherzhang = new Teacher();

teacherzhang.setMaxInteger(100);

setLayout(new FlowLayout());

menubar = new JMenuBar();

choiceGrade = new JMenu("选择级别");

grade1 = new JMenuItem("幼儿级别");

grade2 = new JMenuItem("儿童级别");

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

}

});

grade3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

teacherzhang.setMaxInteger(200);

}

});

choiceGrade.add(grade1);

choiceGrade.add(grade2);

choiceGrade.add(grade3);

menubar.add(choiceGrade);

setJMenuBar(menubar);

textOne = new JTextField(5);

textTwo = new JTextField(5);

textResult = new JTextField(5);

operatorLabel = new JLabel("+");

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

message = new JLabel("你还没有回答");

getProblem = new JButton("获取题目");

giveAnswer = new JButton("确认答案");

add(textOne);

add(operatorLabel);

add(textTwo);

add(new JLabel("="));

add(textResult);

add(giveAnswer);

add(message);

add(getProblem);

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(new ActionListener() {

public void actionPerformed(ActionEvent e) {

teacherzhang.actionPerformed(e);

}

});

giveAnswer.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

teacherzhang.actionPerformed(e);

}

});

textResult.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

teacherzhang.actionPerformed(e);

}

});

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

 

}

MailClass.java

 

package text14;

 

public class MainClass {

 

public static void main(String[] args) {

ComputerFrame frame;

frame = new ComputerFrame();

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

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

}

 

}

 

Teacher.java

package text14;

 

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

 

import javax.swing.*;

 

public class Teacher {

int numberOne, numberTwo;

String operator = "";

boolean isRight;

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("getProblem")) {

numberOne = random.nextInt(maxInteger) + 1;

numberTwo = random.nextInt(maxInteger) + 1;

double d = Math.random();

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("answer")) {

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

}

}

实验结果


Java——实验14 图形用户界面设计(1)的评论 (共 条)

分享到微博请遵守国家法律