网站首页 > 文章中心 > 其它

java显示计算器代码

作者:小编 更新时间:2023-09-25 10:35:31 浏览量:113人看过

java 计算器代码

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.math.BigDecimal;

import java.math.RoundingMode;

java显示计算器代码-图1

import java.util.HashMap;

/**

* 我的计算器.Cheshi 继承于 JFrame,是计算器的界面

c*/

public class Cheshi extends JFrame {

java显示计算器代码-图2

private JTextField textbox = new JTextField("0");

private CalculatorCore core = new CalculatorCore();

private ActionListener listener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

JButton b = (JButton) e.getSource();

String label = b.getText();

String result = core.process(label);

textbox.setText(result);

}

};

public Cheshi(String title) throws HeadlessException {

super(title); // 调用父类构造方法

setupFrame(); // 调整窗体属性

java显示计算器代码-图3

setupControls(); // 创建控件

private void setupControls() {

setupDisplayPanel(); // 创建文本面板

setupButtonsPanel(); // 创建按钮面板

// 创建按钮面板并添加按钮

private void setupButtonsPanel() {

JPanel panel = new JPanel();

panel.setBorder(border);

createButtons(panel, new String[]{

"0", ".", "=", "/", ""

});

this.add(panel, BorderLayout.CENTER);

* 在指定的面板上创建按钮

*

* @param panel 要创建按钮的面板

* @param labels 按钮文字

*/

private void createButtons(JPanel panel, String[] labels) {

for (String label : labels) {

// 如果 label 为空,则表示创建一个空面板.否则创建一个按钮.

if (label.equals("")) {

panel.add(new JPanel());

} else {

JButton b = new JButton(label);

b.addActionListener(listener); // 为按钮添加侦听器

panel.add(b);

// 设置显示面板,用一个文本框来作为计算器的显示部分.

private void setupDisplayPanel() {

panel.setLayout(new BorderLayout());

setupTextbox();

panel.add(textbox, BorderLayout.CENTER);

this.add(panel, BorderLayout.NORTH);

// 调整文本框

private void setupTextbox() {

textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐

textbox.setEditable(false); // 文本框只读

textbox.setBackground(Color.white); // 文本框背景色为白色

// 调整窗体

private void setupFrame() {

this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束

this.setResizable(false); // 窗体大小固定

// 程序入口

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Cheshi frame = new Cheshi("我的计算器");

frame.setVisible(true); // 在桌面上显示窗体

class CalculatorCore {

boolean reset = true;

private String operator;

private HashMapString, Operator operators = new HashMapString, Operator();

private HashMapString, Processor processors = new HashMapString, Processor();

CalculatorCore() {

setupOperators();

setupProcessors();

// 为每种命令添加处理方式

private void setupProcessors() {

public void calculate(String command) {

numberClicked(command);

processors.put("\\.", new Processor() {

dotClicked();

processors.put("=", new Processor() {

equalsClicked();

processors.put("[+\\-*/]", new Processor() {

operatorClicked(command);

processors.put("C", new Processor() {

clearClicked();

processors.put("CE", new Processor() {

clearErrorClicked();

// 为每种 operator 添加处理方式

private void setupOperators() {

operators.put("+", new Operator() {

operators.put("-", new Operator() {

operators.put("*", new Operator() {

operators.put("/", new Operator() {

// 根据命令处理.这里的命令实际上就是按钮文本.

public String process(String command) {

for (String pattern : processors.keySet()) {

if (command.matches(pattern)) {

processors.get(pattern).calculate(command);

break;

// 当按下 CE 时

private void clearErrorClicked() {

if (operator == null) {

number1 = null;

reset = true;

// 当按下 C 时,将计算器置为初始状态.

private void clearClicked() {

operator = null;

// 当按下 = 时

private void equalsClicked() {

calculateResult();

// 计算结果

private void calculateResult() {

Operator oper = operators.get(operator);

if (oper != null) {

// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)

private void operatorClicked(String command) {

if (operator != null) {

operator = command;

// 当按下 . 时

private void dotClicked() {

} else if (reset) {

reset = false;

private void numberClicked(String command) {

if (reset) {

// 运算符处理接口

interface Operator {

// 按钮处理接口

interface Processor {

void calculate(String command);

求用JAVA实现计算器的代码(可实用的,没语法错误的)

java计算器代码

这段代码对你有帮助

* 我的计算器.MyCalculator 继承于 JFrame,是计算器的界面

public class MyCalculator extends JFrame {

public MyCalculator(String title) throws HeadlessException {

MyCalculator frame = new MyCalculator("我的计算器");

以上就是土嘎嘎小编为大家整理的java显示计算器代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章