1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4
5 class CalculatorPanel extends JPanel implements ActionListener{
6 public CalculatorPanel(){
7 setLayout(new BorderLayout());
8
9 display = new JTextField("0");
10 display.setHorizontalAlignment(JTextField.RIGHT);
11 display.setEditable(false);
12 add(display, "North");
13
14 JPanel p = new JPanel();
15 p.setLayout(new GridLayout(4, 4));
16 String buttons = "789/456*123-0.=+";
17 for (int i = 0; i < buttons.length(); i++)
18 addButton(p, buttons.substring(i, i + 1));
19 add(p, "Center");
20 }
21
22 private void addButton(Container c, String s){
23 JButton b = new JButton(s);
24 c.add(b);
25 b.addActionListener(this);
26 }
27
28 public void actionPerformed(ActionEvent evt){
29 String s = evt.getActionCommand();
30 if ('0' <= s.charAt(0) && s.charAt(0) <= '9'
31 || s.equals("."))
32 { if (start) display.setText(s);
33 else display.setText(display.getText() + s);
34 start = false;
35 }
36 else{
37 if (start){
38 if (s.equals("-")){
39 display.setText(s); start = false;
40 }
41 else op = s;
42 }
43 else{
44 double x = Double.parseDouble(display.getText());
45 calculate(x);
46 op = s;
47 start = true;
48 }
49 }
50 }
51
52 public void calculate(double n){
53 if (op.equals("+")) arg += n;
54 else if (op.equals("-")) arg -= n;
55 else if (op.equals("*")) arg *= n;
56 else if (op.equals("/")) arg /= n;
57 else if (op.equals("=")) arg = n;
58 display.setText("" + arg);
59 }
60
61 private JTextField display;
62 private double arg = 0;
63 private String op = "=";
64 private boolean start = true;
65 }
66
67 class CalculatorFrame extends JFrame{
68 public CalculatorFrame(){
69 setTitle("Calculator");
70 setSize(300, 300);
71 addWindowListener(new WindowAdapter(){
72 public void windowClosing(WindowEvent e){
73 System.exit(0);
74 }
75 } );
76
77 Container contentPane = getContentPane();
78 contentPane.add(new CalculatorPanel());
79 }
80 }
1 public class Calculator
2 {
3 public static void main(String[] args) {
4 CalculatorFrame frame = new CalculatorFrame();
5 frame.show();
6 }
7 }
此博客展示了用Java实现简易计算器的代码。通过导入相关包,定义了计算器面板和框架类。面板类负责布局和按钮操作逻辑,框架类设置窗口属性并添加面板。最后在主类中创建框架实例并显示,实现了基本的计算功能。
1万+

被折叠的 条评论
为什么被折叠?



