【学生一枚,请大神指教】关于Java中组件及事件处理,希望哪位大神可以帮看代码,提出建议

题目描述:

![图片说明](https://img-ask.csdn.net/upload/201704/13/1492090575_763617.jpg)
编写一个算术测试小软件,程序由3个类组成,其中Teacher类对象负责给出加减算术运算题目,并判断回答者的答案是否正确;ComputerFrame类对象负责为算术题目提供视图,例如用户可以通过ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面输入答案;MailClasss是软件的主类。

小白一枚,初学Java,上面是一道简单的题,虽然可以实现出来,但是不知道这样写是否可以。如果作为一个Java工程师,您对下面的代码会有什么建议,小白想着一开始便形成一种良好的写代码方式或者思维模式,希望各位大神可以批评建议一下,在这里给各位路过的大神提前拜个早年了,祝您新年快乐!!
@+_+@
代码如下:
ComputerFrame类:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class ComputerFrame extends JFrame{
public static JLabel label;
JMenuBar bar;
JMenu menu;
JButton button1,button2;
JTextField text1,text2,text3;

public ComputerFrame(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init(){
setLayout(new FlowLayout());
//setTitle("算术测试");凭什么布局不用对象.设置,title却用
bar=new JMenuBar();
menu=new JMenu("选择级别");
button1=new JButton("获取题目");
button2=new JButton("确认答案");
text1=new JTextField(5);
text2=new JTextField(5);
text3=new JTextField(5);
menu.add(new JMenuItem("小学生级别"));
bar.add(menu);
add(bar);
setJMenuBar(bar);
add(button1);
add(text1);
add(new JLabel("+"));
add(text2);
add(new JLabel("="));
add(text3);
add(button2);
label=new JLabel("啥也没有");
add(label);
}
public void setListener(Teacher listener){
listener.setText1(text1);
listener.setText2(text2);
listener.setText3(text3);
listener.setButton1(button1);
listener.setButton2(button2);
button1.addActionListener(listener);
button2.addActionListener(listener);
//add(label);
}
}

Teacher类
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class Teacher implements ActionListener{
JButton button1,button2;
JTextField text1,text2,text3;
int r1,r2;
//JLabel label;
public void setText1(JTextField text1){
this.text1=text1;
}
public void setText2(JTextField text2){
this.text2=text2;
}
public void setText3(JTextField text3){
this.text3=text3;
}
public void setButton1(JButton button1){
this.button1=button1;
}
public void setButton2(JButton button2){
this.button2=button2;
}
/*public void setJLabel(JLabel label){
this.label=label;
}
public JLabel getJLabel(){
return label;
}*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==button1){
Random random=new Random();
r1=random.nextInt(100);
r2=random.nextInt(100);
text1.setText(Integer.toString(r1));
text2.setText(Integer.toString(r2));
}
if(e.getSource()==button2){
if(Integer.parseInt(text3.getText())==(r1+r2)){
ComputerFrame.label.setText("回答正确");

        }
        else
            ComputerFrame.label.setText("回答错误");
    }
}

}

MailClass类:
public class MailClass {
public static void main(String args[]){
ComputerFrame win=new ComputerFrame();
win.setTitle("算术测试");
win.setBounds(100,100,460,310);
Teacher listener=new Teacher();
win.setListener(listener);
}
}

2个回答

图片说明

1.给老师类加上menu点击事件的控制
2.Mailclass中 我觉得ComputerFrame win = new ComputerFrame(); 后面的代码都应该直接放在ComputerFrame的构造方法里。因为对于开发人员来说ComputerFrame应该是一个封装好了的算术测试工具,如果还要开发人员再为它设置什么Teacher,我觉得这样不好。
下面是练手建议:
我举得可以把+号做成一个标签 可以获得加减乘除四种题目
加入题目难度,随机数字范围做为区分
可以做一个统计区域:目前作对多少道,做错多少道。
确认答案后,如果答案正确,就跳到下一道题。如果答案错误,就显示正确答案在反馈区。
其实老师接口不是非常必要重新写一个类,还得把各种组件的引用传过去,我建议你改成当前窗体作为监视器
做完上面一条之后再试试使用匿名类去实现按钮的点击事件(这个在开发中比较常用)

目前想到的就这么多,看到你做题目的时候设置的一些好玩的东西,就想起了自己当初也是这样码代码。感觉这些东西是自己设计的,爱加什么东西就加什么东西很有意思。另外我也只是个菜鸟,只是有感而发。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐