diff --git a/CalculatorJFrame.java b/CalculatorJFrame.java new file mode 100644 index 0000000..f9ce1f2 --- /dev/null +++ b/CalculatorJFrame.java @@ -0,0 +1,156 @@ +package Calculatorver4; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.*; + +public class CalculatorJFrame extends JFrame { + JLabel j1 = new JLabel("简易计算器"); + JLabel j2 = new JLabel("运算数一"); + JLabel j3 = new JLabel("运算数二"); + JLabel j4 = new JLabel("运算结果"); + JLabel l1 = new JLabel(" ".repeat(1000)); + JLabel l2 = new JLabel(" ".repeat(1000)); + JLabel l3 = new JLabel(" ".repeat(1000)); + JLabel l4 = new JLabel(" ".repeat(1000)); + JLabel l5 = new JLabel(" ".repeat(1000)); + JLabel l6 = new JLabel(" ".repeat(1000)); + JTextField t1 = new JTextField(10); + JTextField t2 = new JTextField(10); + JTextField t3 = new JTextField(10); + JTextField t4 = new JTextField(30); + JButton b1 = new JButton("相加"); + JButton b2 = new JButton("相减"); + JButton b3 = new JButton("全部清零"); + public CalculatorJFrame() { + initJFrame(); + + loadInterFace(); + + this.setVisible(true); + } + + private void loadInterFace() { + + this.getContentPane().add(j1); + this.getContentPane().add(l1); + this.getContentPane().add(j2); + this.getContentPane().add(t1); + this.getContentPane().add(l2); + this.getContentPane().add(j3); + this.getContentPane().add(t2); + this.getContentPane().add(l3); + this.getContentPane().add(j4); + this.getContentPane().add(t3); + this.getContentPane().add(l4); + this.getContentPane().add(b1); + this.getContentPane().add(b2); + + this.getContentPane().add(l5); + this.getContentPane().add(b3); + this.getContentPane().add(l6); + this.getContentPane().add(t4); + + + + b1.addActionListener(new MyActionListener()); + b2.addActionListener(new MyActionListener()); + b3.addActionListener(new MyActionListener()); + +// t1.addActionListener(new TextActionListener(t1)); +// t2.addActionListener(new TextActionListener(t2)); + + } + + private void initJFrame() { + this.setSize(400,400); + this.setTitle("简易计算器"); + this.setLocationRelativeTo(null); + this.setDefaultCloseOperation(3); + this.setLayout(new FlowLayout()); + } + + + private class MyActionListener implements ActionListener{ + public void actionPerformed(ActionEvent e) { + if(e.getSource() != b3) { + if(t1.getText().equals("") || t2.getText().equals("")) { + t4.setText(""); + t4.setText("注意:运算数一和运算数二不能为空!"); + } + else { + t4.setText(""); + if(e.getSource() == b1) { + if(check(t1) + check(t2)==2){ + String sa = t1.getText(); + Double a2 = Double.parseDouble(sa); + String sb = t2.getText(); + Double b = Double.parseDouble(sb); + Double c = a2+b; + String sc = Double.toString(c); + t3.setText(sc); + } + + } + else if(e.getSource() == b2) { + if(check(t1) + check(t2)==2) { + String sa = t1.getText(); + Double a = Double.parseDouble(sa); + String sb = t2.getText(); + Double b = Double.parseDouble(sb); + Double c = a - b; + String sc = Double.toString(c); + t3.setText(sc); + } + } + } + } + else { + t1.setText(""); + t2.setText(""); + t3.setText(""); + t4.setText(""); + } + } + } + public int check(JTextField tf) { + JTextField t = t1; + t4.setText(""); + String s = t.getText(); + boolean flag = true; + boolean l=true,r=true; + int cnt=0; + char[] a = s.toCharArray(); + if(a[0] == '.') l = false; + if(a[a.length-1] == '.') r = false; + for(int i=0;i'9') && a[i]!='.' ) { + flag = false; + } + } + if(!flag) { + t4.setText(""); + t4.setText("注意:运算数中不能含有除了数字和小数点之外的非法字符!"); + return 0; + } + else { + if(!l) { + t4.setText(""); + t4.setText("注意:运算数的开头不能是小数点!"); + return 0; + } + if(!r) { + t4.setText(""); + t4.setText("注意:运算数的结尾不能是小数点!"); + return 0; + } + if(cnt>1) { + t4.setText(""); + t4.setText("注意:运算数中小数点超过一个!"); + return 0; + } + } + return 1; + } +}