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
    关注

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)