今天尝试编制一个计算器。Java里面提供有Swing类用来编制图形界面,但是很多控件的编程比较复杂,各控件的用法也有自己的特点,按钮类文本框类密码框类标签类菜单类等等。个人感觉,计算器的编写还是比较简单,没有很多的控件,各种按键基本都是同一种类型Button类就可以,从空间的分布来看也是比较简单。
对于计算器的各个字符按键,可以考虑用箱式布局,因为各个按键大小一致,分布均匀,适合箱式布局的操作,主要也是箱式布局比较简单。
先创建一个水平箱,
Box hBox2 = Box.createHorizontalBox(); //创建一个水平箱
将这一排的按键都添加到水平箱体里
hBox2.add(button7);
hBox2.add(button8);
hBox2.add(button9);
hBox2.add(buttonMulti); //乘号
同样的操作,将所有计算器的按键都放在不同的水平箱里面,参考计算器的外观布局
Box hBox1 = Box.createHorizontalBox();
hBox1.add(buttonCE); //全部清除键
hBox1.add(buttonC); //删除键
hBox1.add(buttonDel); //退位键
hBox1.add(buttonDiv); //除号键
Box hBox2 = Box.createHorizontalBox();
hBox2.add(button7);
hBox2.add(button8);
hBox2.add(button9);
hBox2.add(buttonMulti); //乘号键
Box hBox3 = Box.createHorizontalBox();
hBox3.add(button4);
hBox3.add(button5);
hBox3.add(button6);
hBox3.add(buttonMinus); //减号键
Box hBox4 = Box.createHorizontalBox();
hBox4.add(button1);
hBox4.add(button2);
hBox4.add(button3);
hBox4.add(buttonAdd); //加号键
Box hBox5 = Box.createHorizontalBox();
hBox5.add(buttonBlock); //空白键
hBox5.add(button0);
hBox5.add(buttonDot); //小数点
hBox5.add(buttonAmount); //等于键
在每行的键位都分布好后,将所有的水平箱加入到垂直箱里面,就可以完成计算器的键位配置
Box vBox = Box.createVerticalBox();
vBox.add(hBox1);
vBox.add(hBox2);
vBox.add(hBox3);
vBox.add(hBox4);
vBox.add(hBox5);
为了简化每个按键的创建代码,可以新建一个MyButton类,每个键位的监听响应和有关代码后面补充。
class MyButton extends JButton{
public JButton myIcon( String filename ){
JButton button = new JButton();
button.setIcon( new ImageIcon(filename) ); //用图片取代默认显示
button.setBorderPainted(false); //对边框的显示进行设置
button.setContentAreaFilled(true);
return button;
}
}
JButton button1 = new MyButton().myIcon("1.png");
JButton button2 = new MyButton().myIcon("2.png");
JButton button3 = new MyButton().myIcon("3.png");
JButton buttonAdd = new MyButton().myIcon("add.png");