GUI实现超简单的计算器
计算器样式

实现代码
//实现超简易的计算器
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("计算结束");
}
}
}
嗯,比之前好看多了@~@
总结:
- String类型要用 **Integer.parseInt()**方法转int型,相反,则用 “”+int 转String型。
- 面向对象编程强调对象的属性和方法,操作时,应尽量调用对象本身,再通过对象调用属性和方法。
- 内部类的优点,可以畅通无阻的访问外部类的属性,所以建议尽量使用内部类。
GUI实现超简单的计算器的更多相关文章
- jsp学习---使用jsp和JavaBean实现超简单网页计算器
一.需求 如题,用jsp实现一个超简单的网页计算器. 二.实现 1.效果图 1)初始界面: 2)随便输入两个数进行相乘: 3)当除数为零时提示报错: 2.代码 Calculator.java pack ...
- 超简单工具puer——“低碳”的前后端分离开发
本文由作者郑海波授权网易云社区发布. 前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具.其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其 ...
- Java简单公式计算器
最近给公司开发业务代码时,碰到一个场景,简单描述是这样的: 客户要向咱们公司定制一件产品,这个产品呢,有很多属性,那公司得根据这些属性报价呀,怎么报价呢?公司针对某种类型的产品有一个基准价,在同类产品 ...
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超 ...
- 记住密码超简单实现(C#)
实现效果如下 实现过程 [Serializable] class User { //记住密码 private string loginID; public string LoginID { get { ...
- 超简单的JNI——NDK开发教程
不好意思各位,我按照网上一些教程进行JNI开发,折腾了半天也没成功,最后自己瞎搞搞定了,其实超简单的,网上的教程应该过时了,最新版的AS就包含了NDK编译的功能,完全不用手动javah,各种包名路径的 ...
- js制作简单的计算器
学着做了一个简单的计算器!记录记录!哈哈 <!DOCTYPE html> <html> <head> <title>简单的计算器</title&g ...
- ASP.NET中一种超简单的Ajax解决方案
为什么是Ajax2? 因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了... 话说看了评论才发现,原 ...
- chm转换为html的超简单方法
在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile ...
随机推荐
- KMP子串匹配(只能匹配出唯一子串)
using namespace std; #include <iostream> #include<string> //自定义字符串存储结构String(包括char数组.le ...
- jvm源码解读--20 结合jvm源码理解 java 设计模式 模板方法
write by 张艳涛 前言: 在学习jvm之前,看过设计模式的书,知道模板方法的设计模式,今天在看java并发编程的艺术里面关于AbstractQueuedSynchronizer 用法,这个就使 ...
- 深入jvm虚拟机--第一篇 void TemplateInterpreterGenerator::generate_and_dispatch(Template* t, TosState tos_out) 函数
今天第一次使用虚拟姐打断点,断点设置在了void TemplateInterpreterGenerator::generate_and_dispatch(Template* t, TosState t ...
- open jdk 绿色版 下载
https://adoptopenjdk.net/ 是 rethat 的 openjdk 地址, jdk 11 , 进入页面后搜索 : jdk_x64_windo , 下载 zip 绿色版的那个. h ...
- 10分钟物联网设备接入阿里云IoT平台
前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...
- Go通关03:控制结构,if、for、switch逻辑语句
if 条件语句 func main() { i:=6 if i >10 { fmt.Println("i>10") } else if i>5 && ...
- 必备!一文掌握Wordpress插件
必备!一文掌握Wordpress插件 什么是插件? Wordpress是一个非常强大的建站系统,而在我们建站的过程中,插件的使用必不可少. 插件是WordPress功能的扩展,也是WordPress得 ...
- netty系列之:文本聊天室
目录 简介 聊天室的工作流程 文本处理器 初始化ChannelHandler 真正的消息处理逻辑 总结 简介 经过之前的系列文章,我们已经知道了netty的运行原理,还介绍了基本的netty服务搭建流 ...
- GUI编程简介
GUI编程(淘汰) GUI编程怎么学? 这是什么 它怎么玩 该如何去在我们平时运用 class -- 可阅读 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1 ...
- zookeeper查看启动状态报错:Error contacting service. It is probably not running.
问题描述 我有三台虚拟机master.slave1.slave2.每台虚拟机启动zkServer.sh时都没有报错,然后紧接着查看zkServer.sh的状态,这时候出现了错误:Error conta ...