计算器的实现——基础篇(一)
看了一段时间的java基础书了,想动手实践一个小的项目,于是便拿计算器来练手。思路大体上是这样的,先完成基本功能,后续再做进一步的完善。
首先得先实现计算器的界面,这儿是采用Java的AWT实现的,选用的IDE是Eclipse,当然,你也可以选择其他的IDE。
AWT的相关理论知识
AWT即抽象窗口工具包(Abstract Window Toolkit),是Java API为Java程序提供的建立图形用户界面的基本工具集,AWT可用于Java Application和Java Applet的图形用户界面的创建。
AWT类层次结构图如下:
组件(Component)
组件是绝大多数AWT组件(如:按钮、文本框、复选框等)的父类, 是个抽象类。
容器(Container)
容器也是组件,它最主要的作用是装载其它组件,以实现图形界面上的布局。有两种类型的容器:Window和Panel。从上图可知,Window也有两个子类:Frame和Dialog;Panel有一个子类:Applet。
Panel不能单独存在,只能存在于其他容器(Window或其子类)中;一个Panel对象代表了一个长方形的区域,在这
区域中可以容纳其他组件。
布局管理器
java.awt包提供了FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout等5种布局方式,类似于Android的线性布局、相对布局等方式;这儿主要用到了两种布局:GridLayout和BorderLayout。
BorderLayout把容器分为5个区域:东、西、南、北和中;而GridLayout将容器分割成若干个行与列,组件被填充到每个网格中。
设计需求
拟设计一个初步的计算器版本,仅包括数字1~9,小数点.,+,-,*,/和=,另外,还有个文本显示框,用于显示结果。
设计思路
首先是布局,显然将数字1~9,小数点.,+,-,*,/和=采用GridLayout布局方式较好,4行4列;另外,考虑到文本显示框在界面的最上方,是个上下的格式,所以,计算器整体上采用BorderLayout布局方式;
其次,文本框对应的类是Label,各个按键对应的类是Button;
最后,考虑采用数组的形式存储数字1~9,小数点.,+,-,*,/和=。
代码实现
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Calculator {
private String [] names = {"7","8","9","+","4","5","6",
"-","1","2","3","*","0",".","=","/"};
private Button[] button = new Button[16];
private Label label;
private Panel panel;
private Frame frame;
public Calculator() {
frame = new Frame("Calculator");
label = new Label();
panel = new Panel();
panel.setLayout(new GridLayout(4,4)); //4行4列
for( int i = 0; i < 16; i++ ){
button[i] = new Button(names[i]);
panel.add(button[i]);
}
frame.add(label,"North"); //填放label
frame.add(panel,"Center"); //填放panel
frame.pack();
//点击关闭图标时,结束程序
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt){
System.exit(0);
}
});
frame.setVisible(true);
}
public static void main(String[] args) {
new Calculator();
}
}
实现效果
参考资料
1.《Java面向对象编程》孙卫琴老师 著
2. 百度文库《AWT工具集简介》PPT