java计算器小编程

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Calculator extends JFrame { 

private Container container; 

private GridBagLayout layout; 

private GridBagConstraints constraints; 

private JTextField displayField;// 计算结果显示区 

private String lastCommand;// 保存+,-,*,/,=命令 

private double result;// 保存计算结果 

private boolean start;// 判断是否为数字的开始 

public Calculator() { 

super("Calculator"); 
container = getContentPane(); 
layout = new GridBagLayout(); 
container.setLayout(layout); 
constraints = new GridBagConstraints(); 
start = true; 
result = 0; 
lastCommand = "="; 
displayField = new JTextField(20); 
displayField.setHorizontalAlignment(JTextField.RIGHT); 
constraints.gridx = 0; 
constraints.gridy = 0; 
constraints.gridwidth = 4; 
constraints.gridheight = 1; 
constraints.fill = GridBagConstraints.BOTH; 
constraints.weightx = 100; 
constraints.weighty = 100; 
layout.setConstraints(displayField, constraints); 
container.add(displayField); 
ActionListener insert = new InsertAction(); 
ActionListener command = new CommandAction(); 
// addButton("Backspace", 0, 1, 2, 1, insert); 
// addButton("CE", 2, 1, 1, 1, insert); 
// addButton("C", 3, 1, 1, 1, insert); 
addButton("7", 0, 2, 1, 1, insert); 
addButton("8", 1, 2, 1, 1, insert); 
addButton("9", 2, 2, 1, 1, insert); 
addButton("/", 3, 2, 1, 1, command); 
addButton("4", 0, 3, 1, 1, insert); 
addButton("5", 1, 3, 1, 1, insert); 
addButton("6", 2, 3, 1, 1, insert); 
addButton("*", 3, 3, 1, 1, command); 
addButton("1", 0, 4, 1, 1, insert); 
addButton("2", 1, 4, 1, 1, insert); 
addButton("3", 2, 4, 1, 1, insert); 
addButton("-", 3, 4, 1, 1, command); 
addButton("0", 0, 5, 1, 1, insert); 
// addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 
addButton(".", 2, 5, 1, 1, insert); 
addButton("+", 3, 5, 1, 1, command); 
addButton("=", 0, 6, 4, 1, command); 
this.setResizable(false); 
setSize(180, 200); 
setVisible(true); 

} 

private void addButton(String label, int row, int column, int with, 
int height, ActionListener listener) { 

JButton button = new JButton(label); 
constraints.gridx = row; 
constraints.gridy = column; 
constraints.gridwidth = with; 
constraints.gridheight = height; 
constraints.fill = GridBagConstraints.BOTH; 
button.addActionListener(listener); 
layout.setConstraints(button, constraints); 
container.add(button); 
} 

private class InsertAction implements ActionListener { 

public void actionPerformed(ActionEvent event) { 

String input = event.getActionCommand(); 
if (start) { 
displayField.setText(""); 
start = false; 
if (input.equals("+/-")) 
displayField.setText(displayField.getText() + "-"); 
} 

if (!input.equals("+/-")) { 
if (input.equals("Backspace")) { 
String str = displayField.getText(); 
if (str.length() > 0) 
displayField 
.setText(str.substring(0, str.length() - 1)); 
} else if (input.equals("CE") || input.equals("C")) { 
displayField.setText("0"); 
start = true; 
} else 
displayField.setText(displayField.getText() + input); 
} 
} 
} 

private class CommandAction implements ActionListener { 

public void actionPerformed(ActionEvent evt) { 
String command = evt.getActionCommand(); 
if (start) { 
lastCommand = command; 
} else { 
calculate(Double.parseDouble(displayField.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; 
displayField.setText("" + result); 
} 

public static void main(String[] args) { 
Calculator calculator = new Calculator(); 
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值