用Java实现一个简单的计算器, 用到java.swing包, 实现一个GUI的计算器.
swing包详解
代码如下:
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class Calculator {
public static void main(String[] args) {
Pane p = new Pane("Calculator");
p.creatFrame();
}
}
class Pane {
String name;
public final String button0 = "0";
public final String button1 = "1";
public final String button2 = "2";
public final String button3 = "3";
public final String button4 = "4";
public final String button5 = "5";
public final String button6 = "6";
public final String button7 = "7";
public final String button8 = "8";
public final String button9 = "9";
public final String button_add = "+";
public final String button_sub = "-";
public final String button_mul = "*";
public final String button_div = "/";
public final String button_dot = ".";
public final String button_equ = "=";
public final String button_del = "del";
private double result;
private String MidResult;
TextField textField = new TextField(30);
TextField textFieldResult = new TextField(30);
Pane(String _name) {
this.name = _name;
this.result = 0;
this.MidResult = "";
}
Pane() {
this.result = 0;
this.MidResult = "";
}
//对于button 的操作
JButton ActionButtonInput(String buttonName) {
JButton button = new JButton(buttonName);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
MidResult += buttonName;
textField.setText(MidResult);
// System.out.println(buttonName);
}
});
return button;
}
JButton ActionButtonEqu(String buttonName) {
JButton button = new JButton(buttonName);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
calculate();
textFieldResult.setText(Double.toString(result));
}
});
return button;
}
JButton DelButton(String buttonName) {
JButton button = new JButton(buttonName);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
result = 0;
MidResult = "";
textField.setText(MidResult);
textFieldResult.setText("");
}
});
return button;
}
//计算输入的字符串
double calculate() {
//得到输入字符串的数字和操作符
String regex0 = "(\\+)|(\\-)|(\\*)|(\\/)";
String regex1 = "[0-9]+|([0-9]+|[0-9]+\\.[0-9]+)";
String array[] = MidResult.split(regex0);
String operator[] = MidResult.split(regex1);
String operator1[] = new String[operator.length];
//格式化operator数组
int j = 0;
for(int i = 0; i < operator.length; ++i) {
if(operator[i].equals("."));
else operator1[j++] = operator[i];
}
//计算结果
double tresult = 0;
for (int i = 0; i < array.length; ++i) {
if (i == 0) {
tresult = Double.parseDouble(array[i]);
}
else {
if (operator1[i].equals("+"))
tresult += Double.parseDouble(array[i]);
else if (operator1[i].equals("-"))
tresult -= Double.parseDouble(array[i]);
else if (operator1[i].equals("*"))
tresult *= Double.parseDouble(array[i]);
else if (operator1[i].equals("/"))
tresult /= Double.parseDouble(array[i]);
else continue;
}
}
this.result = tresult;
return result;
}
//创建JFrame窗体
void creatFrame() {
JFrame frame = new JFrame(name);
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.setSize(250, 275);
frame.setVisible(true); // set visible -- true
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // set exit on close
JPanel panelButtonFeild01 = new JPanel();
panelButtonFeild01.add(ActionButtonInput(button7));
panelButtonFeild01.add(ActionButtonInput(button8));
panelButtonFeild01.add(ActionButtonInput(button9));
panelButtonFeild01.add(ActionButtonInput(button_div));
JPanel panelButtonFeild02 = new JPanel();
panelButtonFeild02.add(ActionButtonInput(button4));
panelButtonFeild02.add(ActionButtonInput(button5));
panelButtonFeild02.add(ActionButtonInput(button6));
panelButtonFeild02.add(ActionButtonInput(button_mul));
JPanel panelButtonFeild03 = new JPanel();
panelButtonFeild03.add(ActionButtonInput(button1));
panelButtonFeild03.add(ActionButtonInput(button2));
panelButtonFeild03.add(ActionButtonInput(button3));
panelButtonFeild03.add(ActionButtonInput(button_sub));
JPanel panelButtonFeild04 = new JPanel();
panelButtonFeild04.add(ActionButtonInput(button0));
panelButtonFeild04.add(ActionButtonInput(button_dot));
panelButtonFeild04.add(ActionButtonInput(button_add));
// equal
panelButtonFeild04.add(ActionButtonEqu(button_equ));
JPanel panelButtonFeild05 = new JPanel();
panelButtonFeild05.add(DelButton(button_del));
// merger
Box vbox = Box.createVerticalBox();
vbox.add(textField);
vbox.add(textFieldResult);
vbox.add(panelButtonFeild01);
vbox.add(panelButtonFeild02);
vbox.add(panelButtonFeild03);
vbox.add(panelButtonFeild04);
vbox.add(panelButtonFeild05);
frame.setContentPane(vbox);
frame.pack();
}
}
效果图: