您的位置:首页 > 编程语言 > Java开发

java 计算器

2010-11-16 19:14 148 查看
Code:

import java.awt.*;

import java.awt.event.*;

import java.text.DecimalFormat;

import javax.swing.*;

public class Calculator5 extends JFrame implements ActionListener

{

/**

*

*/

private static final long serialVersionUID = 1L;

//private JTextArea text_area;

JButton but[],enter;

public enum MyOperator{ADD, SUB, MUL, DIV}

private MyOperator oper;

private JTextField text_area;

private double result, last;

private HelpDialog viewdialog, helpdialog;

private int flag, enterflag;

public Calculator5()

{

super("Calculator5");

this.setResizable(false);

this.setBounds(300, 240, 240, 340);

this.setDefaultCloseOperation(3);

text_area = new JTextField("0");

text_area.setEditable(false);

Dimension mini_size = new Dimension(1000,40);

text_area.setPreferredSize(mini_size);

System.out.println("tr"+text_area.getSize().width+"tr"+text_area.getHeight());

text_area.setFont(new Font("Consolas", 0, 25));//"Default", Font.bold, 20

text_area.setHorizontalAlignment(JTextField.RIGHT);

this.getContentPane().add(text_area, BorderLayout.NORTH);

JPanel jpanel = new JPanel();

jpanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,7));

this.getContentPane().add(jpanel);

String b[] = {"√", "+/-", "C", "+", "7", "8", "9", "-", "4", "5", "6",

// 0 1 2 3 4 5 6 7 8 9 10

"*", "1", "2", "3", "/", "0", "."};

//11 12 13 14 15 16 17

but = new JButton[b.length];

for(int i = 0; i<b.length; i++)

{

but[i] = new JButton(b[i]);

Dimension same_size = new Dimension(50,40);

but[i].setPreferredSize(same_size);

but[i].addActionListener(this);

jpanel.add(but[i]);

}

enter= new JButton("=");

Dimension same_size = new Dimension(106,40);

enter.setPreferredSize(same_size);

enter.addActionListener(this);

jpanel.add(enter);

addmiiMenu();

this.setVisible(true);

helpdialog = new HelpDialog(this, "关于产品", 320, 150);

viewdialog = new HelpDialog(this, "使用说明", 320, 300);

}

public void addmiiMenu()

{

JMenuBar menubar = new JMenuBar();

this.setJMenuBar(menubar);

String menustr[] = {"查看", "文件", "帮助(F1)"};

JMenu menu[] = new JMenu[menustr.length];

for(int i = 0; i<menustr.length; i++)

{

menu[i] = new JMenu(menustr[i]);

menubar.add(menu[i]);

}

JMenuItem menu_help_view = new JMenuItem("查看帮助 ");

menu_help_view.addActionListener(this);

menu_help_view.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_MASK));

JMenuItem menu_help_about = new JMenuItem("关于计算器");

menu_help_about.addActionListener(this);

menu[2].add(menu_help_view);

menu[2].addSeparator();

menu[2].add(menu_help_about);

menu[2].setMnemonic(KeyEvent.VK_F1);

}

public static void main(String args[])

{

new Calculator5();

}

private class HelpDialog extends JDialog

{

/**

*

*/

private static final long serialVersionUID = 1L;

JFrame jframe;

JTextArea jtexr;

HelpDialog(JFrame jframe, String st, int wid, int hig)

{

super(jframe,st,true);

this.jframe=jframe; //

this.setSize(wid,hig);

jtexr = new JTextArea("");

jtexr.setEditable(false);

jtexr.setFont(new Font("仿宋", 1, 15));

jtexr.setLineWrap(true);

//jtexr.setEnabled(false);

this.getContentPane().add(jtexr);

this.setDefaultCloseOperation(HIDE_ON_CLOSE);

}

void show (String message)

{

jtexr.setText(message);

this.setLocation(jframe.getX()+100,jframe.getY()+100);

this.setVisible(true);

}

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

DecimalFormat df = new DecimalFormat("#########.#########");

if(e.getSource()instanceof JMenuItem) //MenuItem

{

if(e.getActionCommand()=="查看帮助 ")

viewdialog.show("可以使用计算器进行如加、减、乘、除这样简单的运算。" +

"/n/n" +

"单击“查看”菜单,然后单击所需模式。" +

"/n/n" +

"切换模式时,将清除当前的计算。但会保留“记忆钥匙”所存储的计算历史记录和数字。" +

"/n/n" +

"单击计算器键进行所需的计算");

if(e.getActionCommand()=="关于计算器")

helpdialog.show("/n/n All rights reserved by " +

"/n Mr Baoning Gai" +

"/n 11/16/2010");

}

if(e.getSource()instanceof JButton)

{

if(e.getSource()==but[4])

{

Addnumber(7);

}

if(e.getSource()==but[5])

{

Addnumber(8);

}

if(e.getSource()==but[6])

{

Addnumber(9);

}

if(e.getSource()==but[8])

{

Addnumber(4);

}

if(e.getSource()==but[9])

{

Addnumber(5);

}

if(e.getSource()==but[10])

{

Addnumber(6);

}

if(e.getSource()==but[12])

{

Addnumber(1);

}

if(e.getSource()==but[13])

{

Addnumber(2);

}

if(e.getSource()==but[14])

{

Addnumber(3);

}

if(e.getSource()==but[16])

{

Addnumber(0);

}

if(e.getSource()==but[17]) //not complement

{

try

{

Integer.parseInt(text_area.getText());

flag = 1;

}

catch(NumberFormatException nfe)

{

System.out.println("!");

}

finally{}

}

if(e.getSource()==but[3]) //not complement

{

enterflag = 0;

oper = MyOperator.ADD;

result = Double.parseDouble( text_area.getText() );

text_area.setText("0");

}

if(e.getSource()==but[7]) //not complement

{

enterflag = 0;

oper = MyOperator.SUB;

result = Double.parseDouble( text_area.getText() );

text_area.setText("0");

}

if(e.getSource()==but[11]) //not complement

{

enterflag = 0;

oper = MyOperator.MUL;

result = Double.parseDouble( text_area.getText() );

text_area.setText("0");

}

if(e.getSource()==but[15]) //not complement

{

enterflag = 0;

oper = MyOperator.DIV;

result = Double.parseDouble( text_area.getText() );

text_area.setText("0");

}

if(e.getSource()==but[0]) //求根

{

double a = Double.parseDouble( text_area.getText() );

a = Math.sqrt(a);

String str = "" + df.format(a);

text_area.setText(str);

result = Double.parseDouble( text_area.getText() );

enterflag = 1;

}

if(e.getSource()==but[1]) //not complement

{

double a = Double.parseDouble( text_area.getText() );

a = 0 - a;

String str = "" + df.format(a);

text_area.setText(str);

result = Double.parseDouble( text_area.getText() );

}

if(e.getSource()==but[2]) //not complement

{

text_area.setText("0");

oper = null;

result = 0;

enterflag = 0;

}

if(e.getSource()==enter&&oper!=null) // complement

{

Operate();

enterflag = 1;

}

System.out.print(" result="+result);//NOY

System.out.print(" last="+last);//NOY

System.out.print(" flag="+flag);//NOY

System.out.print(" enterflag="+enterflag);//NOYenterflag

System.out.println(oper); //NOY

}

}

public void Addnumber(int getnumber)

{

DecimalFormat df = new DecimalFormat("#########.#########");

String str;

if(enterflag==1)

{

str = "0";

enterflag = 0;

oper = null;

}

else

{

str = text_area.getText();

}

if(flag==1)

{

str += ".";

flag = 0;

}

str =str+getnumber;

double input = Double.parseDouble( str );

str = "" + df.format(input);

last = input;

text_area.setText(str);

System.out.println(input);

System.out.println(str);

}

public void Operate()

{

DecimalFormat df = new DecimalFormat("#########.#########");

System.out.println("clik enter");//NOY

double b = last;

double a = result;

switch(oper)

{

case ADD :a = a+b; break;

case SUB :a = a-b; break;

case MUL :a = a*b; break;

case DIV :a = a/b; break;

}

result = a;

String str = "" + df.format(result);

text_area.setText(str);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: