swing窗口编程-实现一个计算器

介绍

简单的说说这个小程序的难点,第一是窗口的绘制,第二是事件的添加,第三是计算使用的算法,这里要用到栈的特点。

效果展示

这个计算器可以实现n多个数字的加减乘除运算
在这里插入图片描述

绘制窗口使用的组件

JFrame:用来画窗口
JPanel:用来盛放组件
JTextArea:文字域组件,用来显示算式和结果
JButton:按钮组件

事件监听

没有监听事件,绘制好的窗口也只是个摆设,这里使用的方法是addActionListener,参数采用的是抽象的匿名内部类,要重写actionPerformed方法。

计算器的简单算法

依次取数字和运算符,如果是数字直接入栈,如果是运算符,判断优先级,如果是加减直接入栈,如果是乘除,数字出栈,和下一个数字运算后入栈,这样以来,栈中只存在单一的数字,或者是只用加减的运算式,这样处理就简单多了。

采用的设计模式

模板设计模式。为什么采用的是这个模式,因为绘制窗口是个固定的流程,所以采用这个模式,可以高度的复用。
斜体的是抽象类,箭头代表继承关系
#代表protected
-代表private
+代表public
习惯URL图的可以看明白。
在这里插入图片描述

代码

窗口绘制的抽象类

package com.gwx.www.frameprogram;

import javax.swing.*;

/**
 * 基本模板
 *
 * @author alvinguo
 * @date 2019-06-14
 */
public abstract class BasicFrame extends JFrame {
    /**
     * 设置组件样式
     */
    protected abstract void setComponent();

    /**
     * 设置监听事件
     */
    protected abstract void setListener();

    /**
     * 添加组件
     */
    protected abstract void addComponent();

    /**
     * 设置窗口
     */
    protected abstract void setFrameSelf();

    /**
     * 初始化窗口
     * @param
     * @return void
     */
    public void initFrame() {
        this.setComponent();
        this.setListener();
        this.addComponent();
        this.setFrameSelf();
    }

}

实现具体的窗口类

package com.gwx.www.frameprogram;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Stack;

/**
 * 计算器窗口
 *
 * @author alvinguo
 * @date 2019-06-14
 */
public class CalculatorFrame extends BasicFrame {

    /**
     * 错误码
     */
  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值