前言
最近在复习着Java Swing的使用,在布局这块反复又看了很久,然后突然发现GirdLayout机器适合来做一个计算器的简单样子,所以花了一点时间做了一下,最后没想到是在处理结果的算法这一块花的时间最多,这个简单的计算器目前来说支持的是加减乘除和括号运算,当然之后可能会扩展三角函数等功能吧。。。。
下面我将从各个模块来展示对应的代码
一、主界面部分
这个部分就是一个展示计算器的界面,只是简单的套用了GirdLayout和几个button(所以最后写完发现好像Swing没有复习到多少hhh)
package com.UI;
import com.UI.Listener.buttonListener;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
/*
* 2015-06-10
*/
/***
* 计算器的主页面的设置
*/
public class calcUI extends JFrame{
JButton resultButton = new JButton("");
JPanel[] panel = new JPanel[5];
public calcUI()
{
setSize(500,400);
//设置为GirdLayout
setLayout(new GridLayout(6,1));
add(resultButton);
for(int i = 0;i < 5;i++){
panel[i] = new JPanel();
add(panel[i]);
//gridLayout
GridLayout gridLayout = new GridLayout(1,4,3,3);
panel[i].setLayout(gridLayout);
}
//计算器输入
String [] buttonNames = new String []{
"<-","(",")","C","7", "8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
for (int i=0;i<buttonNames.length;i++) {
JButton jButton = new JButton(buttonNames[i]);
panel[i/4].add(jButton);
// 添加监听器来监听计算器
jButton.addActionListener(new buttonListener(resultButton));
}
//config resultButton
resultButton.setSize(200, 50);
resultButton.setHorizontalAlignment(SwingConstants.RIGHT);
resultButton.setEnabled(false);
setTitle("calcUI");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
calcUI demo = new calcUI();
demo.setVisible(true);
}
}
二、监听器部分
这部分使用的是按钮监听器,通过获取每个按钮对应的文字类型改变上方显示结果按钮给出的文字。
package com.UI.Listener;
import com.UI.Utils.Calc;
import javax.swing.*;
import java.awt.event.