计算器样式

实现代码

//实现超简易的计算器
public class Test02 {
public static void main(String[] args) {
Counter counter = new Counter();
}
} //计算器类
class Counter extends Frame{
public Counter() {
super("简易计算器");
this.setLayout(new FlowLayout(FlowLayout.CENTER));
//3个文本框
TextField t1 = new TextField(5);
TextField t2 = new TextField(5);
TextField t3 = new TextField(10); //1个标签
Label label = new Label("+"); //1个按钮
Button button = new Button("="); //给按钮添加监听
button.addActionListener(new myCounterListener(t1,t2,t3)); this.add(t1);
this.add(label);
this.add(t2);
this.add(button);
this.add(t3);
this.pack();
this.setVisible(true);
}
} //监听类
class myCounterListener implements ActionListener{
TextField t1;
TextField t2;
TextField t3; public myCounterListener(TextField t1, TextField t2, TextField t3) {
this.t1 = t1;
this.t2 = t2;
this.t3 = t3;
} @Override
public void actionPerformed(ActionEvent actionEvent) {
//1.获取加数和被加数
int left = Integer.parseInt(t1.getText());
int right = Integer.parseInt(t2.getText()); //2.两数相加,和传给第三个框
t3.setText(""+(left+right)); //3.清除前两个框
t1.setText("");
t2.setText(""); System.out.println("计算结束");
}
}

功能实现,不过用的是面向过程编程,好像太丑了a…

重构!

//面向对象+内部类思想重构
public class Test02Up {
public static void main(String[] args) {
new CounterUp().loadFrame();
}
} //计算器类
class CounterUp extends Frame {
//属性
TextField t1;
TextField t2;
TextField t3; //方法
void loadFrame() {
setTitle("简易计算器");
t1 = new TextField(5);
t2 = new TextField(5);
t3 = new TextField(10);
Label label = new Label("+");
Button button = new Button("="); //给按钮添加监听
button.addActionListener(new myCounterListenerUp()); //布局
setLayout(new FlowLayout(FlowLayout.CENTER));
add(t1);
add(label);
add(t2);
add(button);
add(t3); pack();
setVisible(true);
} //监听类
//内部类的优点,可以直接访问外部类的属性
class myCounterListenerUp implements ActionListener {
// /*获取计算器这个对象,在一个类中组合另外一个类(和继承功能类似)*/
// CounterUp counterUp = null;
//
// public myCounterListenerUp(CounterUp counterUp) { /*直接传入对象,操作对象的属性*/
// this.counterUp = counterUp;
// } @Override
public void actionPerformed(ActionEvent actionEvent) {
//1.获取加数和被加数
//2.两数相加,和传给第三个框
//3.清除前两个框
int left = Integer.parseInt(t1.getText());
int right = Integer.parseInt(t2.getText());
t3.setText("" + (left + right));
t1.setText("");
t2.setText(""); System.out.println("计算结束");
}
}
}

嗯,比之前好看多了@~@

总结:

  1. String类型要用 **Integer.parseInt()**方法转int型,相反,则用 “”+int 转String型。
  2. 面向对象编程强调对象的属性和方法,操作时,应尽量调用对象本身,再通过对象调用属性和方法。
  3. 内部类的优点,可以畅通无阻的访问外部类的属性,所以建议尽量使用内部类。

GUI实现超简单的计算器的更多相关文章

  1. jsp学习---使用jsp和JavaBean实现超简单网页计算器

    一.需求 如题,用jsp实现一个超简单的网页计算器. 二.实现 1.效果图 1)初始界面: 2)随便输入两个数进行相乘: 3)当除数为零时提示报错: 2.代码 Calculator.java pack ...

  2. 超简单工具puer——“低碳”的前后端分离开发

    本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...

  3. Java简单公式计算器

    最近给公司开发业务代码时,碰到一个场景,简单描述是这样的: 客户要向咱们公司定制一件产品,这个产品呢,有很多属性,那公司得根据这些属性报价呀,怎么报价呢?公司针对某种类型的产品有一个基准价,在同类产品 ...

  4. 把C#程序(含多个Dll)合并成一个Exe的超简单方法

    开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超 ...

  5. 记住密码超简单实现(C#)

    实现效果如下 实现过程 [Serializable] class User { //记住密码 private string loginID; public string LoginID { get { ...

  6. 超简单的JNI——NDK开发教程

    不好意思各位,我按照网上一些教程进行JNI开发,折腾了半天也没成功,最后自己瞎搞搞定了,其实超简单的,网上的教程应该过时了,最新版的AS就包含了NDK编译的功能,完全不用手动javah,各种包名路径的 ...

  7. js制作简单的计算器

    学着做了一个简单的计算器!记录记录!哈哈 <!DOCTYPE html> <html> <head> <title>简单的计算器</title&g ...

  8. ASP.NET中一种超简单的Ajax解决方案

    为什么是Ajax2? 因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了... 话说看了评论才发现,原 ...

  9. chm转换为html的超简单方法

    在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile ...

随机推荐

  1. odoo前后端交互详解

    为了简单叙述,暂时不考虑多个db的情况(主要是懒得说没有db或者多个db实例的情况)当odoo指定数据库开启服务时(也就是odoo-bin -d <some_db_name> ),我们使用 ...

  2. 第三篇--如何修改exe文件版本号和文件信息

    控制台程序添加版本信息方法: 项目右键 Add-->Resource-->选择Version-->new,然后就可以修改里面的信息了,重新编译一下就OK.

  3. WEB安全新玩法 [10] 防范竞争条件支付漏洞

    服务器端业务逻辑,特别是涉及数据库读写时,存在着关键步骤的时序问题,如果设计或代码编写不当就可能存在竞争条件漏洞.攻击者可以利用多线程并发技术,在数据库的余额字段更新之前,同时发起多次兑换积分或购买商 ...

  4. Kafka流处理内幕详解

    1.概述 流处理是一种用来处理无穷数据集的数据处理引擎.通常无穷数据集具有以下几个特点: 无穷数据:持续产生的数据,它们通常会被称为流数据.例如:银行信用卡交易订单.股票交易就.游戏角色移动产生的数据 ...

  5. 用webpack发布一个vue插件包

    创建库 本来以为很简单,结果配置了webpack之后,运行build就报错了,似乎不认识es6语法,于是先后安装了几个包: @babel/core @babel/preset-env babel-lo ...

  6. 数据结构——图的深度优先遍历(邻接矩阵表示+java版本)

    ​1.深度优先遍历(DFS) 图的深度优先遍历本质上是一棵树的前序遍历(即先遍历自身,然后遍历其左子树,再遍历右子树),总之图的深度优先遍历是一个递归的过程. 如下图所示,左图是一个图,右图是图的深度 ...

  7. 升级vs更新,用词莫忘准确(附PHP版本升级教程)

    升级vs更新 Web技术日新月异,更新升级是维护工作之一,长时间不更新(升级)的程序,就如长时间不维护的建筑物一样,会加速老化.功能逐渐缺失直至无法使用.而我们最近发现,有的朋友对"更新&q ...

  8. 工资8000以下的Android程序员注意了!接下来要准备面对残酷现实了……

    最近在知乎看到一个测试,特扎心: 以下三种情况,哪个最让你绝望? ❶ 每月工资去掉开销还存不到3千: ❷ 家人突然急病住院,医药费10万: ❸ 同班的家长都在争先恐后给孩子报名各种辅导班.兴趣班,但一 ...

  9. SaToken学习笔记-04

    SaToken学习笔记-04 如果有问题,请点击:传送门 角色认证 在sa-token中,角色和权限可以独立验证 // 当前账号是否含有指定角色标识, 返回true或false StpUtil.has ...

  10. WPF基础:Dispatcher介绍

    Disaptcher作用 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以包含多个线程,其中有一个是主线程,其余的是子线程.在WPF或WinForm应用程序中,主线程负 ...