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);
}
}
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);
}
}
相关文章推荐
- java代码写的图形化个人收入计算器
- java 制作小计算器
- Java编写的简单的计算器
- 用java编写计算器的源代码,,,
- 一个java开发的超精简计算器。
- java swing入门 计算器布局
- 简单的JAVA小程序(计算器)
- java组件写一个GUI 计算器
- java钟表时针分针夹角计算器
- JS和JAVA版本的工作日计算器
- JAVA写的计算器
- java制作的亲戚计算器(三姑六婆计算器)
- java技术支持 任务十四 计算器
- java仿写计算器
- java编写的计算器源代码
- java例程练习(简单的计算器[调停者 设计模式 及 内部类 ])
- 简单的计算器(java)
- Java编写的双色球计算器(不使用IDE)
- java实现简单的计算器
- Java Swing实现简单的体重指数(BMI)计算器功能示例