java swing实现简单计算器

 

代码重复率太高了,应该优化一下的,没时间了,呵呵。

setActionCommand() 方法可以大大减少代码量。

Code:
  1. import java.awt.*;   
  2. import java.awt.event.*;   
  3. import javax.swing.*;   
  4.   
  5. public class Test1 {   
  6.     public static void main(String[] args) {   
  7.         Calculator c = new Calculator();   
  8.         c.setVisible(true);   
  9.     }   
  10. }   
  11.   
  12. class Calculator extends JFrame implements ActionListener {   
  13.     Container p;   
  14.     JSplitPane jsp;   
  15.     JTextField resultFiled = new JTextField("0");   
  16.     JPanel resultPane = new JPanel();   
  17.     JPanel btnPane = new JPanel();   
  18.     static float op1=0;   
  19.     static int len=0;   
  20.     static float op2=0;   
  21.     static String output = "";   
  22.     static String opp = "";   
  23.     static boolean flag1 = true;   
  24.     static boolean flag2 = true;   
  25.     String[] btnS = {"1""2""3""+",   
  26.                                      "4""5""6""-",   
  27.                                      "7""8""9""*",   
  28.                                      "0""="".""/"};   
  29.     JButton[] btn = new JButton[16];   
  30.        
  31.     public Calculator() {   
  32.         p = getContentPane();   
  33.         setBounds(100100300300);   
  34.         setTitle("计算器");   
  35.         setResizable(false);   
  36.         setIconImage(new ImageIcon("16.png").getImage());    //设置窗体显示的图标   
  37.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  38.         setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));  //设置鼠标形状   
  39.         this.setBackground(new Color(2550255));   
  40.         JButton cz = new JButton("reset");   
  41.         cz.setBounds(0,0,80,20);   
  42.         cz.setBackground(new Color(65105225));   
  43.         cz.setForeground(new Color(25500));   
  44.         cz.addActionListener(this);   
  45.         resultFiled.setEditable(false);   
  46.         resultFiled.setHorizontalAlignment(JTextField.RIGHT);  //设置自右向左显示   
  47.         resultFiled.setColumns(12);   
  48.         resultFiled.setFont(new Font("", Font.PLAIN, 14));   
  49.         resultFiled.setBackground(new Color(0255127));   
  50.         resultFiled.setForeground(new Color(25500));   
  51.         JButton qx = new JButton("cancel");   
  52.         qx.addActionListener(this);   
  53.         qx.setBackground(new Color(65105225));   
  54.         qx.setForeground(new Color(25500));   
  55.         qx.setSize(80,20);   
  56.         resultPane.setLayout(new FlowLayout());   
  57.         resultPane.add(cz);   
  58.         resultPane.add(resultFiled);   
  59.         resultPane.add(qx);   
  60.         btnPane.setLayout(new GridLayout(4577));   
  61.         for(int i=0; i<16; i++) {   
  62.             btn[i] = new JButton(btnS[i]);   
  63.             btn[i].setBorderPainted(true);   
  64.             btn[i].setContentAreaFilled(true);   
  65.             btn[i].setFont(new Font("", Font.BOLD, 25));   
  66.             btn[i].setBackground(new Color(255,255,0));   
  67.             btn[i].setForeground(new Color(255,0,0));   
  68.             btn[i].addActionListener(this);   
  69.             btnPane.add(btn[i]);   
  70.         }   
  71.         jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, resultPane, btnPane);   
  72.         jsp.setDividerSize(3);   
  73.         jsp.setDividerLocation(35);   
  74.         p.add(jsp, BorderLayout.CENTER);   
  75.     }   
  76.     public void actionPerformed(ActionEvent e) {   
  77.         if(flag1&&   
  78.           (e.getActionCommand()=="1" ||   
  79.            e.getActionCommand()=="2" ||   
  80.            e.getActionCommand()=="3" ||   
  81.            e.getActionCommand()=="4" ||   
  82.            e.getActionCommand()=="5" ||   
  83.            e.getActionCommand()=="6" ||   
  84.            e.getActionCommand()=="7" ||   
  85.            e.getActionCommand()=="8" ||   
  86.            e.getActionCommand()=="9" ||   
  87.            e.getActionCommand()=="0" ||   
  88.            e.getActionCommand()==".")) {   
  89.             output += e.getActionCommand();   
  90.             resultFiled.setText(output);   
  91.         }   
  92.         if(e.getActionCommand()=="=") {   
  93.             if(flag1){   
  94.                 op2 = Float.parseFloat(resultFiled.getText().substring(len+1));   
  95.                 output += e.getActionCommand();   
  96.                 if(opp == "+") {   
  97.                     output += (op1+op2)+"";   
  98.                 } if(opp == "-") {   
  99.                     output += (op1+op2)+"";   
  100.                 } if(opp == "*") {   
  101.                     output += (op1*op2)+"";   
  102.                 } if(opp == "/"){   
  103.                     if(op2-0.0 == 0) {   
  104.                         output += "error";   
  105.                     } else {   
  106.                         output += (op1/op2)+"";   
  107.                     }   
  108.                 }   
  109.                 resultFiled.setText(output);   
  110.                 flag1 = false;   
  111.             }   
  112.         }   
  113.         if(e.getActionCommand() == "reset") {   
  114.             op1 = 0;   
  115.             op2 = 0;   
  116.             opp = "";   
  117.             output ="";   
  118.             flag1 = true;   
  119.             flag2 = true;   
  120.             resultFiled.setText("0");   
  121.         }   
  122.         if(e.getActionCommand() == "+" ||   
  123.            e.getActionCommand() == "-" ||   
  124.            e.getActionCommand() == "*" ||   
  125.            e.getActionCommand() == "/"){   
  126.             if(flag2) {   
  127.                 op1 = Float.parseFloat(resultFiled.getText());   
  128.                 len = resultFiled.getText().length();   
  129.                 opp = e.getActionCommand();   
  130.                 output += e.getActionCommand();   
  131.                 resultFiled.setText(output);   
  132.                 flag2 = false;   
  133.             }   
  134.         }              
  135.     }   
  136. }  

 

你可能感兴趣的:(java,优化,jsp,swing,String,output)