Java计算器(1)

此博客展示了用Java实现简易计算器的代码。通过导入相关包,定义了计算器面板和框架类。面板类负责布局和按钮操作逻辑,框架类设置窗口属性并添加面板。最后在主类中创建框架实例并显示,实现了基本的计算功能。

     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  }

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值