diff --git a/src/java2020spring/CalculatorFrame.java b/src/java2020spring/CalculatorFrame.java new file mode 100644 index 0000000000000000000000000000000000000000..8dd3365f08334f1cbbda9bb05baf8fd308fd522d --- /dev/null +++ b/src/java2020spring/CalculatorFrame.java @@ -0,0 +1,130 @@ +package java2020spring; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.*; +public class CalculatorFrame extends JFrame{ + JPanel p1 = new JPanel(); + JPanel p2 = new JPanel(); + JTextField cal; + String lastCommand="="; + StringBuffer str; + int x,y; + double result; + boolean start=(true); + JButton b[] = new JButton[12]; + JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13; + public CalculatorFrame() { + Container page = getContentPane(); + cal= new JTextField(45); + cal.setBounds(30, 50, 220, 20); + cal.setEditable(false); + p2.add(cal); + p2.setLayout(new GridLayout(5,1)); + for(int i=0;i<10;i++) + {String s=""+i; + b[i]= new JButton(s); + b[i].addActionListener(new NumListener()); + } + b[10]= new JButton("-/+"); b[11]= new JButton("."); + b1= new JButton("/"); b2= new JButton("Back"); + b3= new JButton("*"); b4= new JButton("C"); + b5= new JButton("+"); b6= new JButton("Sqrt"); + b7= new JButton("-"); b8= new JButton("="); + b9=new JButton("MC");b10=new JButton("MR"); + b11=new JButton("MS");b12=new JButton("M+"); + b13=new JButton(" "); + p1.add(b1);p1.add(b2);p1.add(b3);p1.add(b4);p1.add(b5);p1.add(b6);p1.add(b7);p1.add(b8); p1.add(b9);p1.add(b10);p1.add(b11);p1.add(b12);p1.add(b13); + p1.add(b9);p1.add(b10);p1.add(b11);p1.add(b12);p1.add(b13); + p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2); + p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4); + p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6); + p1.add(b[10]);p1.add(b[0]);p1.add(b[11]);p1.add(b7);p1.add(b8); + Dimension preferredSize = new Dimension(85, 95); + b1.setPreferredSize(preferredSize); + p1.setLayout(new GridLayout(5,5,5,5)); + b[10].addActionListener(new CalListener()); b[11].addActionListener(new NumListener()); + b1.addActionListener(new CalListener()); b2.addActionListener(new CalListener()); + b3.addActionListener(new CalListener()); b4.addActionListener(new CalListener()); + b5.addActionListener(new CalListener()); b6.addActionListener(new CalListener()); + b7.addActionListener(new CalListener()); b8.addActionListener(new CalListener()); + b9.addActionListener(new CalListener()); b10.addActionListener(new CalListener()); + b11.addActionListener(new CalListener()); b12.addActionListener(new CalListener()); + page.add(p2); + page.add(p1); + page.setLayout(new FlowLayout()); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setVisible(true); + setResizable(false); + } + + private class NumListener implements ActionListener { + + @Override + public void actionPerformed(ActionEvent e) { + String num = e.getActionCommand(); + if (start) { + cal.setText(num); + start = false; + } + else + cal.setText(cal.getText()+num); + } + } + + private class CalListener implements ActionListener { + + @Override + public void actionPerformed(ActionEvent e) { + start = true; + String command = e.getActionCommand(); + double x = Double.parseDouble(cal.getText()); + if (lastCommand.equals("+")) + result += x; + else if (lastCommand.equals("-")) + result -= x; + else if (lastCommand.equals("*")) + result *= x; + else if (lastCommand.equals("/")) + result /= x; + else if (lastCommand.equals("=")) + result = (int) x; + else if(lastCommand.equals("C")) + result=0; + else if(lastCommand.equals("MC")) + result =0; + else if(lastCommand.equals("M+")) + result=(int) Double.parseDouble(cal.getText()); + else if(lastCommand.equals("MR")) + result=(int) Double.parseDouble(cal.getText()); + else if(lastCommand.equals("MS")) + result=(int) Double.valueOf(cal.getText()).doubleValue(); + cal.setText(""+result); + lastCommand = command; + if(lastCommand.equals("-/+")){ + x=0- Double.parseDouble(cal.getText().trim()); + cal.setText(""+x); } + if(lastCommand.equals("Sqrt")) { + if(x>=0){ + cal.setText(String.valueOf(Math.sqrt(x)));} + else {cal.setText("负数不能开平方根");} + } + if(lastCommand.equals("Back")){ + if(Double.parseDouble(cal.getText()) > 0){ + if(cal.getText().length()> 1){ + cal.setText(cal.getText().substring(0, cal.getText().length()-1)); + }else{ cal.setText("0"); } + }else{ + if(cal.getText().length() > 2){ + cal.setText(cal.getText().substring(0,cal.getText().length()-1)); + }else{ + cal.setText("0"); + } + }}}}} + + + + diff --git a/src/java2020spring/MainCalculator.java b/src/java2020spring/MainCalculator.java new file mode 100644 index 0000000000000000000000000000000000000000..c2cbd7d6a0ef82a5fbfce9d03b7d492014c28448 --- /dev/null +++ b/src/java2020spring/MainCalculator.java @@ -0,0 +1,38 @@ +package java2020spring; + +import java.awt.Color; +import java.awt.Container; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +public class MainCalculator { + public static void main(String args[]) { + CalculatorFrame calculator=new CalculatorFrame(); + calculator.setTitle("标准型计算器"); + Container con=calculator.getContentPane(); + con.setBackground(Color.white); + calculator.setBounds(250, 100, 500, 700); + JMenuBar menubar = new JMenuBar(); + JMenu edit = new JMenu("编辑"); + JMenu check = new JMenu("查看"); + JMenu help = new JMenu("帮助"); + JMenuItem copy = new JMenuItem("复制"); + JMenuItem formal = new JMenuItem("标准型"); + JMenuItem scient = new JMenuItem("科学型"); + JMenuItem message = new JMenuItem("帮助信息"); + edit.add(copy); + check.add(formal); + check.addSeparator(); + check.add(scient); + help.add(message); + menubar.add(edit); + menubar.add(check); + menubar.add(help); + calculator.setJMenuBar(menubar); + calculator.setVisible(true); + calculator.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + calculator.setVisible(true); + } +} diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java deleted file mode 100644 index fc09c195f566d0e707f5e8a2f05fd168069c73a7..0000000000000000000000000000000000000000 --- a/src/java2020spring/Test.java +++ /dev/null @@ -1,10 +0,0 @@ -package java2020spring; - -public class Test { - - public static void main(String[] args) { - System.out.println("Hello world!"); - - } - -}