简单的计算器代码

本程序不是我写的,是在《Core Java》第八版中的

/*

 *   Core Java   P316 

 *   create a calculate

 * */

 

package first;

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

public class Calculator {

public static void main(String[] args)

{

EventQueue.invokeLater(new Runnable()

{

public void run()

{

CalculatorFrame frame = new CalculatorFrame();

frame.setTitle("Calculator");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

});

}

}

 

// a frame with a calculator panel

class CalculatorFrame extends DrawFrame

{

/**

 * 

 */

private static final long serialVersionUID = 1L;

 

public CalculatorFrame()

{

CalculatorPanel panel = new CalculatorPanel();

add(panel);

pack();

}

}

 

// a panel with calculator button and a result display

class CalculatorPanel extends JPanel

{

/**

 * 

 */

private static final long serialVersionUID = 1L;

 

private JButton display ;

private JPanel panel ;

private double result ;

private String lastCommand ;

private boolean start ;



public CalculatorPanel()

{

setLayout(new BorderLayout());



result = 0 ;

lastCommand = "=";

start = true ;



// add the display

display = new JButton("0");

display.setEnabled(false);

display.setHorizontalAlignment(JTextField.RIGHT);

add(display, BorderLayout.NORTH);



ActionListener insert = new InsertAction();

ActionListener command = new CommandAction();



// add buttons

panel = new JPanel();

panel.setLayout(new GridLayout(4,4));



addButton("7", insert);

addButton("8", insert);

addButton("9", insert);

addButton("/", command);



addButton("4", insert);

addButton("5", insert);

addButton("6", insert);

addButton("*", command);



addButton("1", insert);

addButton("2", insert);

addButton("3", insert);

addButton("-", command);



addButton("0", insert);

addButton(".", insert);

addButton("=", command);

addButton("+", command);



add(panel, BorderLayout.CENTER);

}



public void addButton(String label, ActionListener listener)

{

JButton button = new JButton(label);

button.addActionListener(listener);

panel.add(button);

}



private class InsertAction implements ActionListener

{

public void actionPerformed(ActionEvent event)

{

String input = event.getActionCommand();

if(start)

{

display.setText(" ");

start = false ;

}

display.setText(display.getText() + input);

}

}



private class CommandAction implements ActionListener

{

public void actionPerformed(ActionEvent event)

{

String command = event.getActionCommand();

if(start)

{

if(command.equals("-"))

{

display.setText(command);

start = false ;

}

else

lastCommand = command ;

}

else

{

calculate(Double.parseDouble(display.getText()));

lastCommand = command ;

start = true ;

}

}

}



public void calculate(double x)

{

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 = x;

display.setText(" " + result);

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值