计算器样式

实现代码

//实现超简易的计算器
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. 'utf-8' codec can't decode byte的解决办法

    参考链接:https://www.cnblogs.com/zyh19980816/p/11830065.html 问题:''utf-8' codec can't decode byte 0xa3 in ...

  2. 【原创】case、casez和casex谁是谁

    在Verilog中case语句经常用于多分支表决的结构,case后的表达式会与各分支表达式"全等"那么对应的分支会被执行.其基本结构如下: case(expression) exp ...

  3. js学习笔记之排序算法的原理及代码

    冒泡排序 比较任何两个相邻的项,如果第一个比第二个大,则交换它们 重复这样的操作,直到排序完成,具体代码如下: let arr = [67,23,11,89,45,76,56,99] function ...

  4. "virtualbox for mac安装器遇到了一个错误, 导致安装失败. 请联系软件制造商以获得帮助"的解决办法

    virtualbox下载地址: https://www.virtualbox.org/wiki/Downloads 原因:"Mac OS 10.13.4 会阻止外部内核扩展的安装" ...

  5. 01_安装电脑软件的步骤批处理脚本.bat

    REM 01_安装电脑软件的步骤批处理脚本.bat MD 01_安装电脑软件的步骤 REM ZIP解压密码空格MD 02_制作杏雨梨云USB维护系统2019中秋版之国庆更新固态U盘MD 03_复制安装 ...

  6. 计算机网络part2——物理层

    物理层概述 1.物理层基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体. 主要任务:确定与传输媒体接口有关的一些特性 特性: 机械特性 电气特性 功能特性 规 ...

  7. Java面向对象01——什么是面向对象

    面向过程&面向对象 面向过程思想(微观): 步骤清晰简单,第一步做什么,第二部做什么....... 面向过程适合处理一些较为简单的问题 面向对象思想(宏观): 物以类聚,分类的思维模式,思考问 ...

  8. ICCV2021 |重新思考人群中的计数和定位:一个纯粹基于点的框架

    ​ 论文:Rethinking Counting and Localization in Crowds:A Purely Point-Based Framework 代码:https://github ...

  9. Kong网关安装之Docker版(1)

    前言: Kong 是天生的微服务网关.她的官方简介是:Kong 是一个云原生,高效,可扩展的分布式 API 网关. 自 2015 年在 github 开源后,广泛受到关注,目前已收获 1.9w+ 的 ...

  10. Linux 硬盘与硬件管理

    硬件以文件系统(Filesystem)角度来看 文件系统:一个可被挂载的数据称为文件系统,每个操作系统可以使用的文件系统并不一样,windows98是FAT或者FAT16文件系统,而windows20 ...