qq_34705844 2017-04-13 13:29 采纳率: 0%
浏览 913

【学生一枚,请大神指教】关于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条回答

  • qq_34705844 2017-04-13 13:37
    关注

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?