如何减少AWT中的代码长度?

时间:2017-01-23 12:25:45

标签: java user-interface button awt

我有一个关于Java的问题,即关于AWT的问题。我刚开始学习并使用它。我编写了一个代码,我需要尽量减少它。

如何减少AWT中的代码长度?

这是我的代码

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Task extends Frame implements ActionListener{
  Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btn11,btn12,btn13,btn14,btn15,btn16,btn_gen;
  TextField tf1,tf2;
  Label lb1,lb2;
  Panel pn1,pn2,pn3;
  public void init(){
    btn1 = new Button("btn1");
    btn1.addActionListener(this);
    btn2 = new Button("btn2");
    btn2.addActionListener(this);
    btn3 = new Button("btn3");
    btn3.addActionListener(this);
    btn4 = new Button("btn4");
    btn4.addActionListener(this);
    btn5 = new Button("btn5");
    btn5.addActionListener(this);
    btn6 = new Button("btn6");
    btn6.addActionListener(this);
    btn7 = new Button("btn7");
    btn7.addActionListener(this);
    btn8 = new Button("btn8");
    btn8.addActionListener(this);
    btn9 = new Button("btn9");
    btn9.addActionListener(this);
    btn10 = new Button("btn10");
    btn10.addActionListener(this);
    btn11 = new Button("btn11");
    btn11.addActionListener(this);
    btn12= new Button("btn12");
    btn12.addActionListener(this);
    btn13 = new Button("btn13");
    btn13.addActionListener(this);
    btn14 = new Button("btn14");
    btn14.addActionListener(this);
    btn15 = new Button("btn15");
    btn15.addActionListener(this);
    btn16 = new Button("btn16");
    btn16.addActionListener(this);
    btn_gen = new Button("Generate");
    btn_gen.addActionListener(this);
    tf1 = new TextField(30);
    tf1.setFocusable(false);
    tf2 = new TextField(30);
    tf2.setFocusable(false);
    lb1 = new Label("row",Label.RIGHT);
    lb2 = new Label("col",Label.RIGHT);
    pn1 = new Panel();
    pn1.setLayout(new GridLayout(2,2));
    pn2 = new Panel();
    pn2.setLayout(new GridLayout(4,4));
    pn3 = new Panel();
    pn3.setLayout(new GridLayout(1,1));
  }

  public Task(){                                    
    init();
    setSize(400,400);
    setLayout(new BorderLayout());
    addWindowListener(new WindowAdapter() {
      @Override
      public void windowClosing(WindowEvent e) {
        super.windowClosing(e);
        System.exit(0);
      }
    });
    pn1.add(lb1);
    pn1.add(tf1);
    pn1.add(lb2);
    pn1.add(tf2);
    pn2.add(btn1);
    pn2.add(btn2);
    pn2.add(btn3);
    pn2.add(btn4);
    pn2.add(btn5);
    pn2.add(btn6);
    pn2.add(btn7);
    pn2.add(btn8);
    pn2.add(btn9);
    pn2.add(btn10);
    pn2.add(btn11);
    pn2.add(btn12);
    pn2.add(btn13);
    pn2.add(btn14);
    pn2.add(btn15);
    pn2.add(btn16);
    pn3.add(btn_gen);
    add(pn1,BorderLayout.NORTH);
    add(pn2,BorderLayout.CENTER);
    add(pn3,BorderLayout.SOUTH);
  }

  @Override
  public void actionPerformed(ActionEvent ae){          
    if (ae.getSource()==btn1){
      tf1.setText("1");
      tf2.setText("1");
    }else
      if (ae.getSource()==btn2){
        tf1.setText("1");
        tf2.setText("2");
      }else
        if (ae.getSource()==btn3){
          tf1.setText("1");
          tf2.setText("3");
        }else
          if(ae.getSource()==btn4){
            tf1.setText("1");
            tf2.setText("4");
          }else
            if(ae.getSource()==btn5){
              tf1.setText("2");
              tf2.setText("1");
            }else
              if (ae.getSource()==btn6){
                tf1.setText("2");
                tf2.setText("2");
              }else
                if(ae.getSource()==btn7){
                  tf1.setText("2");
                  tf2.setText("3");
                }else
                  if(ae.getSource()==btn8){
                    tf1.setText("2");
                    tf2.setText("4");
                  }else
                    if(ae.getSource()==btn9){
                      tf1.setText("3");
                      tf2.setText("1");
                    }else
                      if(ae.getSource()==btn10){
                        tf1.setText("3");
                        tf2.setText("2");
                      }else
                        if(ae.getSource()==btn11){
                          tf1.setText("3");
                          tf2.setText("3");
                        }else
                          if(ae.getSource()==btn12){
                            tf1.setText("3");
                            tf2.setText("4");
                          }else
                            if(ae.getSource()==btn13){
                              tf1.setText("4");
                              tf2.setText("1");
                            }else
                              if(ae.getSource()==btn14){
                                tf1.setText("4");
                                tf2.setText("2");
                              }else
                                if(ae.getSource()==btn15){
                                  tf1.setText("4");
                                  tf2.setText("3");
                                }else
                                  if(ae.getSource()==btn16){
                                    tf1.setText("4");
                                    tf2.setText("4");
                                  }else
                                    if(ae.getSource()==btn_gen){
                                      tf1.setText(String.valueOf((int)(Math.random()*4+1)));
                                      tf2.setText(String.valueOf((int)(Math.random()*4+1)));
                                    }
  }

  public static void main(String [] args){               
    Task ts = new Task();
    ts.setVisible(true);
  }
}

1 个答案:

答案 0 :(得分:1)

通过对按钮1到16使用按钮数组(例如new Button[4][4]),循环以及检查按钮的行和列的方法,然后更新文本字段,可以最小化代码。

事实上,快速检查表明可以将代码从超过170行代码减少到少于90行。