java 编计算器界面

java编写计算器界面~

以前我自己的实验作业



import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Jsq extends JFrame
{
JMenu menu1=new JMenu("编辑(E)");
JMenu menu2=new JMenu("查看(V)");
JMenu menu3=new JMenu("帮助(H)");
JMenuBar bar=new JMenuBar();

JTextField text=new JTextField("0.",20);


JRadioButton c1=new JRadioButton("十六进制",false);
JRadioButton c2=new JRadioButton("十进制",true);
JRadioButton c3=new JRadioButton("八进制",false);
JRadioButton c4=new JRadioButton("二进制",false);


JRadioButton d1=new JRadioButton("角度",true);
JRadioButton d2=new JRadioButton("弧度",false);
JRadioButton d3=new JRadioButton("梯度",false);


JCheckBox e1=new JCheckBox("Inv");
JCheckBox e2=new JCheckBox("Hyp");
JTextField lb1=new JTextField(3);
JTextField lb2=new JTextField(3);

JButton a1=new JButton("Backspace");
JButton a2=new JButton(" CE ");
JButton a3=new JButton(" C ");
JButton a4=new JButton("Sta");
JButton a5=new JButton("Ave");
JButton a6=new JButton("Sum");
JButton a7=new JButton("S");
JButton a8=new JButton("Dat");
JButton a9=new JButton("F-E");
JButton a10=new JButton("dms");
JButton a11=new JButton("sin");
JButton a12=new JButton("cos");
JButton a13=new JButton("tan");
JButton a14=new JButton("(");
JButton a15=new JButton("Exp");
JButton a16=new JButton("x^y");
JButton a17=new JButton("x^3");
JButton a18=new JButton("x^2");
JButton a19=new JButton(")");
JButton a20=new JButton("In");
JButton a21=new JButton("log");
JButton a22=new JButton("n!");
JButton a23=new JButton("1/x");
JButton a24=new JButton("MC");
JButton a25=new JButton("MR");
JButton a26=new JButton("MS");
JButton a27=new JButton("M+");
JButton a28=new JButton("pi");
JButton a29=new JButton("7");
JButton a30=new JButton("4");
JButton a31=new JButton("1");
JButton a32=new JButton("0");
JButton a33=new JButton("A");
JButton a34=new JButton("8");
JButton a35=new JButton("5");
JButton a36=new JButton("2");
JButton a37=new JButton("+/-");
JButton a38=new JButton("B");
JButton a39=new JButton("9");
JButton a40=new JButton("6");
JButton a41=new JButton("3");
JButton a42=new JButton(".");
JButton a43=new JButton("C");
JButton a44=new JButton("/");
JButton a45=new JButton("*");
JButton a46=new JButton("-");
JButton a47=new JButton("+");
JButton a48=new JButton("D");
JButton a49=new JButton("Mod");
JButton a50=new JButton("Or");
JButton a51=new JButton("Lsh");
JButton a52=new JButton("=");
JButton a53=new JButton("E");
JButton a54=new JButton("And");
JButton a55=new JButton("Xor");
JButton a56=new JButton("Not");
JButton a57=new JButton("Int");
JButton a58=new JButton("F");



Jsq()
{
super("计算器");
setSize(900,360);
setVisible(true);
Container con=getContentPane();

JPanel panel1=new JPanel();//菜单栏和文本
panel1.setLayout(new GridLayout(2,1));
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
panel1.add(bar);
panel1.add(text);

JPanel panel2=new JPanel();//单选框
panel2.setLayout(new GridLayout(1,2));
ButtonGroup cbg1=new ButtonGroup();
cbg1.add(c1);
cbg1.add(c2);
cbg1.add(c3);
cbg1.add(c4);
JPanel jp1=new JPanel();
jp1.setLayout(new FlowLayout());
jp1.add(c1);jp1.add(c2);jp1.add(c3);jp1.add(c4);
ButtonGroup cbg2=new ButtonGroup();
cbg2.add(d1);
cbg2.add(d2);
cbg2.add(d3);
JPanel jp2=new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(d1);
jp2.add(d2);
jp2.add(d3);
panel2.add(jp1);
panel2.add(jp2);


JPanel panel3=new JPanel();//复选框
panel3.setLayout(new FlowLayout(FlowLayout.CENTER,20,5));
panel3.add(e1);
panel3.add(e2);
panel3.add(lb1);lb1.setEditable(false);
panel3.add(lb2);lb2.setEditable(false);

JPanel panel4=new JPanel();//三个按钮
panel4.setLayout(new FlowLayout(FlowLayout.CENTER,3,5));
panel4.add(a1);
panel4.add(a2);
panel4.add(a3);

JPanel panel5=new JPanel();//第一列按钮
panel5.setLayout(new GridLayout(5,1,3,3));
panel5.add(a4);
panel5.add(a5);
panel5.add(a6);
panel5.add(a7);
panel5.add(a8);

JPanel panel6=new JPanel();//第二三四列按钮
panel6.setLayout(new GridLayout(5,3,3,3));
panel6.add(a9);
panel6.add(a14);
panel6.add(a19);
panel6.add(a10);
panel6.add(a15);
panel6.add(a20);
panel6.add(a11);
panel6.add(a16);
panel6.add(a21);
panel6.add(a12);
panel6.add(a17);
panel6.add(a22);
panel6.add(a13);
panel6.add(a18);
panel6.add(a23);

JPanel panel7=new JPanel();//第五列按钮
panel7.setLayout(new GridLayout(5,1,3,3));
panel7.add(a24);
panel7.add(a25);
panel7.add(a26);
panel7.add(a27);
panel7.add(a28);

JPanel panel8=new JPanel();//第六七八九十十一列按钮
panel8.setLayout(new GridLayout(5,6,3,3));
panel8.add(a29);panel8.add(a34);panel8.add(a39);panel8.add(a44);panel8.add(a49);panel8.add(a54);
panel8.add(a30);panel8.add(a35);panel8.add(a40);panel8.add(a45);panel8.add(a50);panel8.add(a55);
panel8.add(a31);panel8.add(a36);panel8.add(a41);panel8.add(a46);panel8.add(a51);panel8.add(a56);
panel8.add(a32);panel8.add(a37);panel8.add(a42);panel8.add(a47);panel8.add(a52);panel8.add(a57);
panel8.add(a33);panel8.add(a38);panel8.add(a43);panel8.add(a48);panel8.add(a53);panel8.add(a58);

JPanel panel9=new JPanel();//前五列按钮添加入同一个面板
panel9.setLayout(new FlowLayout(FlowLayout.CENTER,20,0));
panel9.add(panel5);
panel9.add(panel6);
panel9.add(panel7);

JPanel panel12=new JPanel();//复选框与三个按钮添加入同一面板
panel12.setLayout(new GridLayout(1,2,200,5));
panel12.add(panel3);
panel12.add(panel4);

JPanel panel10=new JPanel();//十一列按钮添加入同一面板
panel10.setLayout(new FlowLayout(FlowLayout.CENTER,50,3));
panel10.add(panel9);
panel10.add(panel8);

JPanel panel11=new JPanel();//单选框与菜单文本添加入同一面板
panel11.setLayout(new GridLayout(3,1));
panel11.add(panel1);
panel11.add(panel2);
panel11.add(panel12);

con.setLayout(new GridLayout(2,1));//三大块面板合一
con.add(panel11);
con.add(panel10);
validate();
addWindowListener(new WindowCloser());
}


public class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}


}


public class Ex9_3
{
public static void main(String[] args)
{
new Jsq();
}
}

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class MathCalc extends JFrame{

JTextField textDisplay;
public String [] name={"1","2","3","4","5","6","7","8","9","0",".","c","+","-","*","/","1/x","+/-","="};
JButton [] button=new JButton[name.length];
JButton btn;
double Operand1;
double result=0;
boolean ClearDisplay;
String Operator;
public MathCalc(){
textDisplay=new JTextField(20);
for(int i=0;i<name.length;i++)
button[i]=new JButton(name[i]);
for(int i=0;i<name.length-1;i++)
button[i].setPreferredSize(new Dimension(52,28));
button[18].setPreferredSize(new Dimension(105,28));
layoutComponents(); //加入按钮
//registerEventHander(); //按钮注册事件监听程序
setTitle("计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}

private void layoutComponents(){ //布局按钮面板
Container contentPane=getContentPane();
contentPane.setLayout(new GridLayout(5,1));
JPanel TextPane=new JPanel();
TextPane.add(textDisplay);
JPanel buttonPane0 = new JPanel();
JPanel buttonPane1 = new JPanel();
JPanel buttonPane2 = new JPanel();
JPanel buttonPane3 = new JPanel();
for(int i=0;i<=2;i++)
{
buttonPane0.add(button[i]);
buttonPane0.add(button[10]);
buttonPane0.add(button[11]);
}

for(int i=3;i<=5;i++)
{
buttonPane1.add(button[i]);
buttonPane1.add(button[12]);
buttonPane1.add(button[13]);
}
for(int i=6;i<=8;i++)
{
buttonPane2.add(button[i]);
buttonPane2.add(button[14]);
buttonPane2.add(button[15]);
}
buttonPane3.add(button[9]);
buttonPane3.add(button[16]);
buttonPane3.add(button[17]);
buttonPane3.add(button[18]);

contentPane.add(TextPane);
contentPane.add(buttonPane0);
contentPane.add(buttonPane1);
contentPane.add(buttonPane2);
contentPane.add(buttonPane3);
}
public static void main(String args[]){ //main函数
JFrame.setDefaultLookAndFeelDecorated(true);
MathCalc mathcal=new MathCalc();
mathcal.setVisible(true);
}

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {
//计算器面板
private JFrame f = new JFrame("Calculator");
//输入面扳
private JPanel inputPanel = new JPanel();
//加减乘除面板
private JPanel operationPanel = new JPanel();
//数字面板
private JPanel buttonsPanel = new JPanel();

//输入数据文本框
private JTextField input = new JTextField(20);

//退格键
private JButton backspace = new JButton("BackSpace");
//清空
private JButton CE = new JButton("CE ");
//删除
private JButton C = new JButton("C ");

//四则运算符号键
private JButton add = new JButton("+");
private JButton sub = new JButton("-");
private JButton mul = new JButton("*");
private JButton div = new JButton("/");

//小数点
private JButton decimal = new JButton(".");
//等号
private JButton equal = new JButton("=");

//数字键
private JButton zero = new JButton("0");
private JButton one = new JButton("1");
private JButton two = new JButton("2");
private JButton three = new JButton("3");
private JButton four = new JButton("4");
private JButton five = new JButton("5");
private JButton six = new JButton("6");
private JButton seven = new JButton("7");
private JButton eight = new JButton("8");
private JButton nine = new JButton("9");

private String num1 = "";//保存第一个运算数字
private String operator = "";//保存运算符号

public static void main(String[] args) {
new Calculator();//new计算器实例
}

public Calculator(){
//添加组件,布局
inputPanel.add(input);
f.add(inputPanel, BorderLayout.NORTH);

operationPanel.add(backspace);
operationPanel.add(CE);
operationPanel.add(C);
f.add(operationPanel, BorderLayout.CENTER);

buttonsPanel.add(add);
buttonsPanel.add(sub);
buttonsPanel.add(mul);
buttonsPanel.add(div);
buttonsPanel.add(one);
buttonsPanel.add(two);
buttonsPanel.add(three);
buttonsPanel.add(zero);
buttonsPanel.add(four);
buttonsPanel.add(five);
buttonsPanel.add(six);
buttonsPanel.add(decimal);
buttonsPanel.add(seven);
buttonsPanel.add(eight);
buttonsPanel.add(nine);
buttonsPanel.add(equal);
buttonsPanel.setLayout(new GridLayout(4, 4));
f.add(buttonsPanel, BorderLayout.SOUTH);

//注册各个组件监听事件
backspace.addMouseListener(new OperationMouseListener());
CE.addMouseListener(new OperationMouseListener());
C.addMouseListener(new OperationMouseListener());
decimal.addMouseListener(new OperationMouseListener());
equal.addMouseListener(new OperationMouseListener());

//注册四则运算监听
add.addMouseListener(new CalcMouseListener());
sub.addMouseListener(new CalcMouseListener());
mul.addMouseListener(new CalcMouseListener());
div.addMouseListener(new CalcMouseListener());

//注册数字监听事件
zero.addMouseListener(new NumberMouseListener());
one.addMouseListener(new NumberMouseListener());
two.addMouseListener(new NumberMouseListener());
three.addMouseListener(new NumberMouseListener());
four.addMouseListener(new NumberMouseListener());
five.addMouseListener(new NumberMouseListener());
six.addMouseListener(new NumberMouseListener());
seven.addMouseListener(new NumberMouseListener());
eight.addMouseListener(new NumberMouseListener());
nine.addMouseListener(new NumberMouseListener());

f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private class NumberMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {
if(input.getText().trim().equals("0")){//如果文本框已经是0,结果还是0
input.setText(((JButton)e.getSource()).getText().trim());
}else{//否则的话,把0添加到后面,譬如文本框是1,结果就为10
input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));
}
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

private class CalcMouseListener implements MouseListener{
//如果输入的是运算符号,保存第一个结果和运算符号
public void mouseClicked(MouseEvent e) {
num1 = input.getText().trim();input.setText("");
operator = ((JButton)e.getSource()).getText().trim();
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

private class OperationMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {
if(e.getSource() == backspace){//退格键,删除一个直到没有字符删除
String inputText = input.getText();
if(inputText.length() > 0){
input.setText(inputText.substring(0, inputText.length() - 1));
}
}else if(e.getSource() == C){
input.setText("0");//C,清空所有运算数字和符号
num1 = "";
}else if(e.getSource() == CE){
input.setText("0");//CE-->将文本框置为0
}else if(e.getSource() == decimal){
String text = input.getText().trim();
//如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点
if(text.indexOf(".") == -1){
input.setText(text.concat("."));
}
}else if(e.getSource() == equal){
//如果是等号
if(!operator.trim().equals("")){
if(!input.getText().trim().equals("")){
double result = 0D;
if(operator.equals("+")){//执行加法运算
result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());
}else if(operator.equals("-")){//减法运算
result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());
}else if(operator.equals("*")){//乘法运算
result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());
}else if(operator.equals("/")){//除法运算
result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());
}

//格式化最终结果,保留两位小数点
input.setText(new DecimalFormat("0.00").format(result));
}
}

}

}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

}

class CalcBtn extends JButton {
private static final long serialVersionUID = 1L;
Font font = new Font("仿宋", 1, 22);

public CalcBtn(String text, Color color) {
super(text);
setForeground(color);
setFont(font);
setMargin(new Insets(0, 0, 0, 0));
setFocusable(false);
}
}

@SuppressWarnings("serial")
public class CalcFrame extends JFrame implements ActionListener {

public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
ex.printStackTrace();
}
new CalcFrame().setVisible(true);
}

private CalcBtn btn_1 = new CalcBtn("1", Color.BLUE);
private CalcBtn btn_2 = new CalcBtn("2", Color.BLUE);
private CalcBtn btn_3 = new CalcBtn("3", Color.BLUE);
private CalcBtn btn_4 = new CalcBtn("4", Color.BLUE);
private CalcBtn btn_5 = new CalcBtn("5", Color.BLUE);
private CalcBtn btn_6 = new CalcBtn("6", Color.BLUE);
private CalcBtn btn_7 = new CalcBtn("7", Color.BLUE);
private CalcBtn btn_8 = new CalcBtn("8", Color.BLUE);
private CalcBtn btn_9 = new CalcBtn("9", Color.BLUE);
private CalcBtn btn_0 = new CalcBtn("0", Color.BLUE);
private CalcBtn btn_back = new CalcBtn("←", Color.red);
private CalcBtn btn_c = new CalcBtn("C", Color.red);
private CalcBtn btn_ce = new CalcBtn("CE", Color.red);
private CalcBtn btn_sub = new CalcBtn("-", Color.red);
private CalcBtn btn_multi = new CalcBtn("*", Color.red);
private CalcBtn btn_div = new CalcBtn("/", Color.red);
private CalcBtn btn_add = new CalcBtn("+", Color.red);
private CalcBtn btn_sqrt = new CalcBtn("sqrt", Color.BLUE);
private CalcBtn btn_mod = new CalcBtn("%", Color.BLUE);
private CalcBtn btn_x = new CalcBtn("1/x", Color.BLUE);
private CalcBtn btn_res = new CalcBtn("=", Color.red);
private CalcBtn btn_point = new CalcBtn(".", Color.red);
private CalcBtn btn_flag = new CalcBtn("+/-", Color.BLUE);
private JButton btn_mem = new JButton("");
private CalcBtn btn_m = new CalcBtn("M+", Color.BLUE);
private CalcBtn btn_mc = new CalcBtn("MC", Color.BLUE);
private CalcBtn btn_mr = new CalcBtn("MR", Color.BLUE);
private CalcBtn btn_ms = new CalcBtn("MS", Color.BLUE);
JPanel pan_jtf = new JPanel();
JPanel pan_back = new JPanel();
JPanel pan_mem = new JPanel();
JPanel pan_num = new JPanel();

JTextField jtf_res = new JTextField();
//
private JMenuBar menuBar = new JMenuBar();
private JMenu menu_edit = new JMenu("编辑(E)");
private JMenu menu_view = new JMenu("查看(V)");
private JMenu menu_help = new JMenu("帮助(H)");
private JMenuItem editMenu_copy = new JMenuItem("复制(C)");
private JMenuItem editMenu_paste = new JMenuItem("粘贴(P)");
private JCheckBoxMenuItem viewmenu_standard = new JCheckBoxMenuItem(
"标准型(T)");
private JCheckBoxMenuItem viewmenu_science = new JCheckBoxMenuItem("科学型(S)");
private JCheckBoxMenuItem viewmenu_grouping = new JCheckBoxMenuItem(
"数字分组(I)");
private JMenuItem helpmenu_help = new JMenuItem("帮助主题(H)");
private JMenuItem helpmenu_about = new JMenuItem("关于计算器(A)");
String save1, save2;
BigDecimal op1, op2;
boolean isBigDecimal = false;
int preOp, currentOp = 0;
StringBuffer str = new StringBuffer();

public CalcFrame() {
this.setTitle(" 於 ☆ 弦 ");
this.setResizable(false);
setSize(444, 390);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setJMenuBar(menuBar);
setLayout(null);
init_pan_jtf();
init_menuBar();
init_pan_back();
init_pan_mem();
init_pan_num();
getContentPane().add(pan_jtf);
getContentPane().add(pan_back);
getContentPane().add(pan_mem);
getContentPane().add(pan_num);
}

private void init_menuBar() {
menuBar.add(menu_edit);
menuBar.add(menu_view);
menuBar.add(menu_help);
menu_edit.add(editMenu_copy);
menu_edit.add(editMenu_paste);
menu_view.add(viewmenu_standard);
menu_view.add(viewmenu_science);
menu_view.addSeparator();
menu_view.add(viewmenu_grouping);
menu_help.add(helpmenu_help);
menu_help.addSeparator();
menu_help.add(helpmenu_about);
menu_edit.setMnemonic('E');
menu_view.setMnemonic('V');
menu_help.setMnemonic('H');
editMenu_copy.setMnemonic('C');
editMenu_copy.setAccelerator(KeyStroke.getKeyStroke('C',
InputEvent.CTRL_MASK));
editMenu_paste.setMnemonic('P');
editMenu_paste.setAccelerator(KeyStroke.getKeyStroke('V',
InputEvent.CTRL_MASK));
viewmenu_standard.setMnemonic('T');
viewmenu_science.setMnemonic('S');
viewmenu_grouping.setMnemonic('I');
helpmenu_help.setMnemonic('H');
helpmenu_about.setMnemonic('A');
}

public void init_pan_back() {
pan_back.setSize(340, 40);
pan_back.setLocation(85, 60);
pan_back.setLayout(new GridLayout(1, 3, 5, 0));
pan_back.add(btn_back);
pan_back.add(btn_ce);
pan_back.add(btn_c);
btn_back.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!jtf_res.getText().trim().equals("0.")) {
if (str.length() != 1 && str.length() != 0) {
jtf_res.setText(str.delete(str.length() - 1,
str.length()).toString());
} else {
jtf_res.setText("0.");
str.setLength(0);
}
}
op2 = new BigDecimal(jtf_res.getText().trim());

}
});
btn_c.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf_res.setText("0.");
op1 = op2 = new BigDecimal(0);
str.replace(0, str.length(), " ");
preOp = currentOp = 0;
}
});
btn_ce.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jtf_res.setText("0.");
}
});
}

public void init_pan_jtf() {
jtf_res.setHorizontalAlignment(JTextField.RIGHT);
jtf_res.setFont(new Font("仿宋", 0, 20));
jtf_res.setText("0.");
jtf_res.setEditable(false);
// jtf_res.setFocusable(false);
pan_jtf.setSize(420, 40);
pan_jtf.setLocation(10, 5);
pan_jtf.setLayout(new BorderLayout());
pan_jtf.add(jtf_res);
}

public void init_pan_mem() {
pan_mem.setSize(60, 270);
pan_mem.setLocation(10, 60);
pan_mem.setLayout(new GridLayout(5, 1, 0, 5));
pan_mem.add(btn_mem);
btn_mem.setEnabled(false);
pan_mem.add(btn_mc);
pan_mem.add(btn_mr);
pan_mem.add(btn_ms);
pan_mem.add(btn_m);
}

public void init_pan_num() {
pan_num.setSize(340, 220);
pan_num.setLocation(85, 110);
pan_num.setLayout(new GridLayout(4, 5, 5, 5));
pan_num.add(btn_7);
pan_num.add(btn_8);
pan_num.add(btn_9);
pan_num.add(btn_div);
pan_num.add(btn_sqrt);
pan_num.add(btn_4);
pan_num.add(btn_5);
pan_num.add(btn_6);
pan_num.add(btn_multi);
pan_num.add(btn_mod);
pan_num.add(btn_1);
pan_num.add(btn_2);
pan_num.add(btn_3);
pan_num.add(btn_sub);
pan_num.add(btn_x);
pan_num.add(btn_0);
pan_num.add(btn_flag);
pan_num.add(btn_point);
pan_num.add(btn_add);
pan_num.add(btn_res);
btn_1.addActionListener(this);
btn_2.addActionListener(this);
btn_3.addActionListener(this);
btn_4.addActionListener(this);
btn_5.addActionListener(this);
btn_6.addActionListener(this);
btn_7.addActionListener(this);
btn_8.addActionListener(this);
btn_9.addActionListener(this);
btn_0.addActionListener(this);
btn_sub.addActionListener(this);
btn_multi.addActionListener(this);
btn_div.addActionListener(this);
btn_add.addActionListener(this);
btn_sqrt.addActionListener(this);
btn_x.addActionListener(this);
btn_res.addActionListener(this);
btn_point.addActionListener(this);
btn_flag.addActionListener(this);
// btn_mod.addActionListener(this);

}

@Override
public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
BigDecimal i = new BigDecimal(1);
String temp = jtf_res.getText().trim();
BigDecimal temp1 = new BigDecimal(temp);
if (e.getSource() == btn_flag) {
BigDecimal temp3 = new BigDecimal(jtf_res.getText());
BigDecimal temp4 = new BigDecimal(-1);
BigDecimal temp5 = temp3.multiply(temp4);
jtf_res.setText("" + temp5);
} else if (s.equals("1/x")) {
jtf_res.setText("" + i.divide(temp1, new MathContext(30)));
} else if (s.equals("sqrt")) {
jtf_res.setText("" + temp1.multiply(temp1));
} else if (s.equals("+")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 1;
op2 = new BigDecimal("0");
jtf_res.setText("" + op1);
} else {
currentOp = preOp;
preOp = 1;
switch (currentOp) {
case 1:
op1 = op1.add(op2);
jtf_res.setText("" + op1);
break;
case 2:
op1 = op1.subtract(op2);
jtf_res.setText("" + op1);
break;
case 3:
op1 = op1.multiply(op2);
jtf_res.setText("" + op1);
break;
case 4:
op1 = op1.divide(op2, new MathContext(30));
jtf_res.setText("" + op1);
break;
}
}
} else if (s.equals("-")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 2;
jtf_res.setText("" + op1);
} else {
currentOp = preOp;
preOp = 2;
switch (currentOp) {
case 1:
op1 = op1.add(op2);
jtf_res.setText("" + op1);
break;
case 2:
op1 = op1.subtract(op2);
jtf_res.setText("" + op1);
break;
case 3:
op1 = op1.multiply(op2);
jtf_res.setText("" + op1);
break;
case 4:
op1 = op1.divide(op2, new MathContext(30));
jtf_res.setText("" + op1);
break;
}
}
} else if (s.equals("*")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 3;
jtf_res.setText("" + op1);
} else {
currentOp = preOp;
preOp = 3;
switch (currentOp) {
case 1:
op1 = op1.add(op2);
jtf_res.setText("" + op1);
break;
case 2:
op1 = op1.subtract(op2);
jtf_res.setText("" + op1);
break;
case 3:
op1 = op1.multiply(op2);
jtf_res.setText("" + op1);
break;
case 4:
op1 = op1.divide(op2, new MathContext(30));
jtf_res.setText("" + op1);
break;
}
}
} else if (s.equals("/")) {
str.setLength(0);
if (currentOp == 0) {
preOp = currentOp = 4;
jtf_res.setText("" + op1);
} else {
currentOp = preOp;
preOp = 4;
switch (currentOp) {
case 1:
op1 = op1.add(op2);
jtf_res.setText("" + op1);
break;
case 2:
op1 = op1.subtract(op2);
jtf_res.setText("" + op1);
break;
case 3:
op1 = op1.multiply(op2);
jtf_res.setText("" + op1);
break;
case 4:
op1 = op1.divide(op2, new MathContext(30));
jtf_res.setText("" + op1);
break;
}
}
} else if (s.equals("=")) {
if (currentOp == 0) {
str.setLength(0);
jtf_res.setText("" + op2);
} else {
str.setLength(0);
currentOp = preOp;
switch (currentOp) {
case 1:
op1 = op1.add(op2);
jtf_res.setText("" + op1);
break;
case 2:
op1 = op1.subtract(op2);
jtf_res.setText("" + op1);
break;
case 3:
op1 = op1.multiply(op2);
jtf_res.setText("" + op1);
break;
case 4:
op1 = op1.divide(op2, new MathContext(30));
jtf_res.setText("" + op1);
break;
}
currentOp = 0;
op2 = new BigDecimal("0");
}
} else if (s.equals(".")) {
isBigDecimal = true;
if (jtf_res.getText().trim().indexOf('.') != -1)
;
else {
if (jtf_res.getText().trim().equals("0")) {
str.setLength(0);
jtf_res.setText((str.append("0" + s)).toString());
} else if (jtf_res.getText().trim().equals("")) {
} else {
jtf_res.setText((str.append(s)).toString());
}
}
} else if (s.equals("0")) {
if (jtf_res.getText().trim().equals("0.")) {
} else {
jtf_res.setText(str.append(s).toString());
op2 = new BigDecimal(jtf_res.getText().trim());
}
} else {
jtf_res.setText(str.append(s).toString());
op2 = new BigDecimal(jtf_res.getText().trim());
if (currentOp == 0)
op1 = op2;
}
}
}

package com.shengsiyuan.calculator;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.MenuBar;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator extends JFrame
{
private JTextField textArea;

private JPanel panel1;
private JPanel panel2;

private JMenuBar menuBar;

private JButton b0;
private JButton b1;
private JButton b2;
private JButton b3;
private JButton b4;
private JButton b5;
private JButton b6;
private JButton b7;
private JButton b8;
private JButton b9;
private JButton addButton;
private JButton subButton;
private JButton mulButton;
private JButton divButton;
private JButton equalsButton;
private JButton pointButton;
private JButton backspaceButton;
private JButton clearButton;

private static final int WIDTH = 300;
private static final int HEIGHT = 300;

public JTextField getTextArea()
{
return textArea;
}

public void setTextArea(JTextField textArea)
{
this.textArea = textArea;
}

public void launchFrame()
{
panel1 = new JPanel();
panel2 = new JPanel();

menuBar = new JMenuBar();

textArea = new JTextField("0",25);

this.textArea.setEditable(false);
this.textArea.setHorizontalAlignment(JTextField.RIGHT);

b0 = new JButton("0");
b1 = new JButton("1");
b2 = new JButton("2");
b3 = new JButton("3");
b4 = new JButton("4");
b5 = new JButton("5");
b6 = new JButton("6");
b7 = new JButton("7");
b8 = new JButton("8");
b9 = new JButton("9");
addButton = new JButton("+");
subButton = new JButton("-");
mulButton = new JButton("*");
divButton = new JButton("/");
equalsButton = new JButton("=");
pointButton = new JButton(".");
backspaceButton = new JButton("BackSpace");
clearButton = new JButton("Clear");

panel1.add(backspaceButton);
panel1.add(clearButton);
panel2.add(b7);
panel2.add(b8);
panel2.add(b9);
panel2.add(addButton);
panel2.add(b4);
panel2.add(b5);
panel2.add(b6);
panel2.add(subButton);
panel2.add(b1);
panel2.add(b2);
panel2.add(b3);
panel2.add(mulButton);
panel2.add(b0);
panel2.add(pointButton);
panel2.add(equalsButton);
panel2.add(divButton);

this.add(textArea, BorderLayout.NORTH);

this.setJMenuBar(menuBar);

this.panel1.setLayout(new FlowLayout());
this.panel2.setLayout(new GridLayout(4,4));

this.add(panel1, BorderLayout.CENTER);
this.add(panel2, BorderLayout.SOUTH);

this.setTitle("Simple Calculator");

this.setSize(new Dimension(WIDTH, HEIGHT));

this.setVisible(true);

this.setResizable(false);

this.pack();

this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
});
}

public static void main(String[] args)
{
new Calculator().launchFrame();
}

}

few

相关兴趣推荐

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网