java计算器设计
㈠ 如何java设计计算器并实现功能
java设计计算器,主要是使用java swing,对每个按钮进行监听,实现相关功能,如下代码:
packagecom.qiu.lin.he;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
{
/**
*
*/
=1L;
Resultresult=newResult();//定义text的面板
Number_Keynumber_key=newNumber_Key();//定义按钮面板
//当点击按钮+、-、*、/时,com=true
booleancom=false;
//当i=0时说明是我们第一次输入,字符串text不会累加
inti=0;
//存放text的内容
Stringtext="";
//存放点击按钮+、-、*、/之前的数值
doubledefbutton=0;
//+、-、*、/的代号分别为1,2,3,4
intsymbol=0;
//构造函数
Jisuanqi(){
super("WangJiao");//设定标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序
JPanelpane=newJPanel();//定义主面板
pane.setLayout(newBorderLayout());
setBounds(380,220,30,80);//前两个参数是在屏幕上显示的坐标,后两个是大小
//替换图标
ImageIconicon=newImageIcon("F:1.GIF");
//Jisuanqi.class.getResource("APPLE.GIF")
//);
setIconImage(icon.getImage());
pane.add(result,BorderLayout.NORTH);
pane.add(number_key,BorderLayout.CENTER);
pane.add(number_key.equal,BorderLayout.SOUTH);
number_key.one.addActionListener(this);//对1按钮添加监听事件
number_key.two.addActionListener(this);//对2按钮添加监听事件
number_key.three.addActionListener(this);//对3按钮添加监听事件
number_key.four.addActionListener(this);//对4按钮添加监听事件
number_key.five.addActionListener(this);//对5按钮添加监听事件
number_key.six.addActionListener(this);//对6按钮添加监听事件
number_key.seven.addActionListener(this);//对7按钮添加监听事件
number_key.eight.addActionListener(this);//对8按钮添加监听事件
number_key.nine.addActionListener(this);//对9按钮添加监听事件
number_key.zero.addActionListener(this);//对0按钮添加监听事件
number_key.ce.addActionListener(this);//对置零按钮添加监听事件
number_key.plus.addActionListener(this);//对+按钮添加监听事件
number_key.equal.addActionListener(this);//对=按钮添加监听事件
number_key.sub.addActionListener(this);//对-按钮添加监听事件
number_key.mul.addActionListener(this);//对*按钮添加监听事件
number_key.div.addActionListener(this);//对/按钮添加监听事件
number_key.point.addActionListener(this);//对.按钮添加监听事件
setContentPane(pane);
pack();//初始化窗体大小为正好盛放所有按钮
}
//各个按钮触发的事件
publicvoidactionPerformed(ActionEvente){
/*
*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true如果没有com=
*false;或者是否点击数字键,如果是i=1,如果没有i=0;
*/
if(e.getSource()==number_key.one){
if(com||i==0){
result.text.setText("1");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"1");
}
}elseif(e.getSource()==number_key.two){
if(com||i==0){
result.text.setText("2");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"2");
}
}elseif(e.getSource()==number_key.three){
if(com||i==0){
result.text.setText("3");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"3");
}
}elseif(e.getSource()==number_key.four){
if(com||i==0){
result.text.setText("4");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"4");
}
}elseif(e.getSource()==number_key.five){
if(com||i==0){
result.text.setText("5");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"5");
}
}elseif(e.getSource()==number_key.six){
if(com||i==0){
result.text.setText("6");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"6");
}
}elseif(e.getSource()==number_key.seven){
if(com||i==0){
result.text.setText("7");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"7");
}
}elseif(e.getSource()==number_key.eight){
if(com||i==0){
result.text.setText("8");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"8");
}
}elseif(e.getSource()==number_key.nine){
if(com||i==0){
result.text.setText("9");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"9");
}
}
/*
*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是
*如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添加0;否则保持原来的数值不变
*/
elseif(e.getSource()==number_key.zero){//result.text.getText()是得到text里内容的意思
if(com||i==0){
result.text.setText("0");
com=false;
i=1;
}else{
text=result.text.getText();
if(Float.parseFloat(text)>0||Float.parseFloat(text)<0){//Float.parseFloat(text)就是类型转换了,下面都是一样
result.text.setText(text+"0");
}else{
if(text.trim().indexOf(".")==-1){
result.text.setText(text);
}else{
result.text.setText(text+"0");
}
}
}
}elseif(e.getSource()==number_key.ce){
result.text.setText("0");
i=0;
com=true;
//text="";
defbutton=0;
}
/*
*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加,不存在就添加.
*/
elseif(e.getSource()==number_key.point){
if(com||i==0){
result.text.setText("0.");
com=false;
i=1;
}else{
text=result.text.getText();
if(text.trim().indexOf(".")==-1){
result.text.setText(text+".");
}else{
result.text.setText(text);
}
}
}//获得点击+之前的数值
elseif(e.getSource()==number_key.plus){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=1;
}//获得点击-之前的数值
elseif(e.getSource()==number_key.sub){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=2;
}//获得点击*之前的数值
elseif(e.getSource()==number_key.mul){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
System.out.println(defbutton);
symbol=3;
}//获得点击/之前的数值
elseif(e.getSource()==number_key.div){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=4;
}elseif(e.getSource()==number_key.equal){
switch(symbol){
case1:{//计算加法
doublead=defbutton
+Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case2:{//计算减法
doublead=defbutton
-Double.parseDouble(result.text.getText());
result.text.setText(String.valueOf(ad));
i=0;
text="";
break;
}
case3:{//计算乘法
doublead=defbutton
*Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case4:{//计算除法
doublead=defbutton
/Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
}
System.out.println(com);
}
System.out.println(result.text.getText());
}
@SuppressWarnings("deprecation")
publicstaticvoidmain(String[]args){
Jisuanqiloveyou=newJisuanqi();
loveyou.show();
}
}
//计算器数字按钮定义面板
classNumber_KeyextendsJPanel{
/**
*
*/
=1L;
JButtonzero=newJButton("0");//数字键0
JButtonone=newJButton("1");//数字键1
JButtontwo=newJButton("2");//数字键2
JButtonthree=newJButton("3");//数字键3
JButtonfour=newJButton("4");//数字键4
JButtonfive=newJButton("5");//数字键5
JButtonsix=newJButton("6");//数字键6
JButtonseven=newJButton("7");//数字键7
JButtoneight=newJButton("8");//数字键8
JButtonnine=newJButton("9");//数字键9
JButtonplus=newJButton("+");
JButtonsub=newJButton("-");
JButtonmul=newJButton("*");
JButtondiv=newJButton("/");
JButtonequal=newJButton("=");
JButtonce=newJButton("清零");//置零键
JButtonpoint=newJButton(".");
Number_Key(){
setLayout(newGridLayout(4,4,1,1));//定义布局管理器为网格布局
setBackground(Color.blue);//设置背景颜色
//添加按钮
add(one);
add(two);
add(three);
add(four);
add(five);
add(six);
add(seven);
add(eight);
add(nine);
add(zero);
add(plus);
add(sub);
add(mul);
add(div);
add(point);
add(equal);
add(ce);
}
}
//计算器显示结果的窗体
classResultextendsJPanel{
/**
*
*/
=1L;
//text先是输入和结果
JTextFieldtext=newJTextField("0");
@SuppressWarnings("deprecation")
Result(){//讲输入的数字或得到的结果在text的右边显示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(false);//文本框不能编辑
setLayout(newBorderLayout());//设定布局管理器边框布局
add(text,BorderLayout.CENTER);//text放置在窗体的中间
}
}
运行结果如下:
㈡ 用JAVA设计一个计算器程序
我有,你联系我,我把代码给你! 为了防止别人以为我们作弊了,在这里给出前半段代码……
package MyProject;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//声明三个面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//显示屏所显示的字符串
double x,y;//x和y都是运算数
int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//记忆的数字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//显示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//显示记忆的索引值
tf2.setEditable(false);
//实例化所有按钮、设置其前景色并注册监听器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//实例化四个面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//创建一个空字符串缓冲区
str=new StringBuffer();
//添加面板p0中的组件和设置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
p3.setLayout(gl3);//设置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
MainFrame.getMyMainFrame().setEnabled(true);
Counter.this.dispose();
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
㈢ Java设计计算器
****************************************************************
写了一天,终于写完了。
****************************************************************
说明:
类Calc.java出了界面符合你的要求外,还有以下优点:
1.对输入内容进行校验,如果是非法字符(如字母),不响应键盘事件,而且单个文本框只能输入一个小数点;
2.使用Windows界面风格;
3.采用大数计算,更精准;
4.其它……
****************************************************************
代码如下:
****************************************************************
importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjava.awt.FlowLayout;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.math.BigDecimal;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.UIManager;
/**
*@authorGodwin
*@version2010-05-16
*/
{
JTextFieldnumber1Text;
JTextFieldnumber2Text;
JTextFieldresultText;
publicCalc(){
this.setTitle("计算器");
/*
*菜单栏
*/
//Operation菜单
JMenuItemaddMenuItem=newJMenuItem("Add");
addMenuItem.setMnemonic('a');
JMenuItemsubtractMenuItem=newJMenuItem("Subtract");
subtractMenuItem.setMnemonic('s');
JMenuItemmultiplyMenuItem=newJMenuItem("Multiply");
multiplyMenuItem.setMnemonic('m');
JMenuItemdivideMenuItem=newJMenuItem("Divide");
divideMenuItem.setMnemonic('d');
JMenuoperationFile=newJMenu("Operation");
operationFile.setMnemonic('o');
operationFile.add(addMenuItem);
operationFile.add(subtractMenuItem);
operationFile.add(multiplyMenuItem);
operationFile.add(divideMenuItem);
//Exit菜单
JMenuexitMenu=newJMenu("Exit");
exitMenu.setMnemonic('x');
JMenuItemexitItem=newJMenuItem("Exit");
exitItem.setMnemonic('x');
exitItem.addActionListener(newExitActionListener());
exitMenu.add(exitItem);
//添加Operation和Exit菜单
JMenuBarmenubar=newJMenuBar();
menubar.add(operationFile);
menubar.add(exitMenu);
/*
*操作数和结果
*/
JLabelnumber1Label=newJLabel("Number1");
number1Text=newJTextField(6);
JLabelnumber2Label=newJLabel("Number2");
number2Text=newJTextField(6);
JLabelresultLabel=newJLabel("Result");
resultText=newJTextField(10);
resultText.setEditable(false);
JPaneloperandPanel=newJPanel(newFlowLayout());
operandPanel.add(number1Label);
operandPanel.add(number1Text);
operandPanel.add(number2Label);
operandPanel.add(number2Text);
operandPanel.add(resultLabel);
operandPanel.add(resultText);
/*
*操作符
*/
JButtonaddButton=newJButton("Add");
JButtonsubtractButton=newJButton("Subtract");
JButtonmultiplyButton=newJButton("Multiply");
JButtondivideButton=newJButton("Divide");
JPaneloperatorPanel=newJPanel(newFlowLayout());
operatorPanel.add(addButton);
operatorPanel.add(subtractButton);
operatorPanel.add(multiplyButton);
operatorPanel.add(divideButton);
/*
*添加所有面板
*/
this.add(menubar,BorderLayout.NORTH);
this.add(operandPanel,BorderLayout.CENTER);
this.add(operatorPanel,BorderLayout.SOUTH);
this.pack();
this.setResizable(false);
Toolkittool=Toolkit.getDefaultToolkit();
Dimensionscreen=tool.getScreenSize();
this.setLocation(screen.width/2-this.getWidth()/2,screen.height
/2-this.getHeight()/2);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*
*添加事件监听
*/
//菜单监听
addMenuItem.addActionListener(this);
subtractMenuItem.addActionListener(this);
multiplyMenuItem.addActionListener(this);
divideMenuItem.addActionListener(this);
//文本框监听
number1Text.addKeyListener(newVerifyInputKeyAdapter());
number2Text.addKeyListener(newVerifyInputKeyAdapter());
//按钮监听
addButton.addActionListener(this);
subtractButton.addActionListener(this);
multiplyButton.addActionListener(this);
divideButton.addActionListener(this);
}
{
publicvoidkeyTyped(KeyEvente){
charc=e.getKeyChar();
System.out.println(c);
if(!(('0'<=c)&&(c<='9')||(c==KeyEvent.VK_DELETE)||(c==KeyEvent.VK_BACK_SPACE))){
if(!((!((JTextField)(e.getSource())).getText().contains("."))&&(c=='.'))){
e.consume();
}
}
}
}
{
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
}
publicvoidactionPerformed(ActionEvente){
Stringoperand1=number1Text.getText();
BigDecimalbig1=BigDecimal.valueOf(Double.valueOf(operand1));
Stringoperand2=number2Text.getText();
BigDecimalbig2=BigDecimal.valueOf(Double.valueOf(operand2));
if((!(operand1.equals("")))&&(operand1!=null)
&&(!(operand2.equals("")))&&(operand2!=null)){
Stringname=e.getSource().getClass().getSimpleName();
Stringoperator="";
if(name.equals("JButton")){
JButtonb=(JButton)(e.getSource());
operator=b.getText();
}elseif(name.equals("JMenuItem")){
JMenuItemm=(JMenuItem)e.getSource();
operator=m.getText();
}
if(operator.equals("Add")){
resultText.setText(String.valueOf(big1.add(big2)));
}elseif(operator.equals("Subtract")){
resultText.setText(String.valueOf(big1.subtract(big2)));
}elseif(operator.equals("Multiply")){
resultText.setText(String.valueOf(big1.multiply(big2)));
}elseif(operator.equals("Divide")){
resultText.setText(String.valueOf(big1.divide(big2)));
}else{
JOptionPane.showMessageDialog(this,"操作有误!","错误提示",
JOptionPane.WARNING_MESSAGE);
}
}else{
JOptionPane.showMessageDialog(this,"请输入操作数!","错误提示",
JOptionPane.WARNING_MESSAGE);
number1Text.requestFocus();
}
}
publicstaticvoidmain(String[]args)throwsException{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
newCalc();
}
}
****************************************************************
运行结果如下:
㈣ java设计一个计算器
用自动机实现表达式。参考《编译原理》
㈤ 用Java设计一个计算器的问题!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Appletsum extends JApplet
implements ActionListener{
JTextField inputOne=new JTextField(5);
JTextField inputTwo=new JTextField(5);
JTextField output=new JTextField(5);
public void init(){
Container pane=getContentPane();
pane.setLayout(new FlowLayout());
pane.add(new JLabel("加 数"));
pane.add(inputOne);
pane.add(new JLabel("被加数"));
pane.add(inputTwo);
pane.add(new JLabel(" 和 "));
pane.add(output);
inputTwo.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
double first,second,sum;
first=Double.parseDouble(inputOne.getText().trim());
second=Double.parseDouble(inputTwo.getText().trim());
sum=first+second;
output.setText(String.valueOf(sum));
}
}
㈥ 用java程序 写简易计算器的设计,哪位高手写给我
回答:拿破仑
新手
5月14日 13:16 1 文件名:Calculate_GUI.java
import javax.swing.*;
import java.awt.Container;
import java.awt.event.*;
public class Calculate_GUI extends JFrame{
private JPanel p1;
private JButton keyButton[]=new JButton[16],signButton,clearButton,deleteButton;
private JTextField outputField;
private Container contentPane;
private boolean firstInput=true;
private Calculate_Model model=new Calculate_Model();
public Calculate_GUI(){
p1=new JPanel();
keyButton[0]=new JButton("1");
keyButton[1]=new JButton("2");
keyButton[2]=new JButton("3");
keyButton[3]=new JButton("/");
keyButton[4]=new JButton("4");
keyButton[5]=new JButton("5");
keyButton[6]=new JButton("6");
keyButton[7]=new JButton("*");
keyButton[8]=new JButton("7");
keyButton[9]=new JButton("8");
keyButton[10]=new JButton("9");
keyButton[11]=new JButton("-");
keyButton[12]=new JButton("0");
keyButton[13]=new JButton(".");
keyButton[14]=new JButton("=");
keyButton[15]=new JButton("+");
clearButton=new JButton("c");
signButton=new JButton("+/-");
deleteButton=new JButton("←");
outputField=new JTextField(15);
outputField.setText("0");
outputField.setEditable(false);
contentPane=this.getContentPane();
this.setSize(250,250);
p1.setLayout(new java.awt.GridLayout(4,5));
for(int i=0;i<keyButton.length;i++){
if(i==4)p1.add(deleteButton);
if(i==8)p1.add(clearButton);
if(i==12)p1.add(signButton);
keyButton[i].setFont(new java.awt.Font("Dialog",1,16));
p1.add(keyButton[i]);
}
contentPane.add(outputField,java.awt.BorderLayout.NORTH);
contentPane.add(p1,java.awt.BorderLayout.CENTER);
this.show();
}
public void registEvent(){
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){System.exit(0);}
});
for(int i=0;i<keyButton.length;i++){
keyButton[i].addActionListener(new keyButtonHandler());
}
signButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
outputField.setText(String.valueOf(model.toSign(Double.parseDouble(outputField.getText()))));
}
});
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
outputField.setText(model.backSpace(outputField.getText()));
if(outputField.getText().equals("0"))firstInput=true;
}
});
clearButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
firstInput=true;
outputField.setText("0");
model.reset();
}
});
}
class keyButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent ae){
char actionCommand=ae.getActionCommand().charAt(0);
switch(actionCommand){
case '1':case '2':case '3':case '4':case '5': case '6':case '7':case '8':case '9':case '0':case '.':
if(firstInput){outputField.setText(String.valueOf(actionCommand));firstInput=false;}
else outputField.setText(outputField.getText()+actionCommand);
break;
case '+':case '-':case '*':case '/':
if(firstInput)model.setOperate(actionCommand);
else{
model.setOperateNumber(Double.parseDouble(outputField.getText()));
model.calculating();
model.setOperate(actionCommand);
outputField.setText(String.valueOf(model.getResult()));
firstInput=true;
}
break;
case '=':
if(firstInput){
model.calculating();
outputField.setText(String.valueOf(model.getResult()));
}
else{
model.setOperateNumber(Double.parseDouble(outputField.getText()));
model.calculating();
outputField.setText(String.valueOf(model.getResult()));
firstInput=true;
}
} } }
public static void main(String args[]){
new Calculate_GUI().registEvent();
}
}
2 文件名 Calculate_Model.java
public class Calculate_Model{
private double result;
private double operateNumber;
private char operate;
public Calculate_Model(){
result=0;
operateNumber=0;
operate=' ';
}
public void setResult(double n){
result=n;
}
public void setOperate(char o){
operate=o;
}
public void setOperateNumber(double n){
operateNumber=n;
}
public double getResult(){
return result;
}
public void calculating(){
switch(operate){
case ' ':result=operateNumber;break;
case '+':result+=operateNumber;break;
case '-':result-=operateNumber;break;
case '*':result*=operateNumber;break;
case '/':result/=operateNumber;break;
}
}
public void reset(){
result=0;
operateNumber=0;
operate=' ';
}
public double toSign(double n){
return 0-(n-0);
}
public String backSpace(String n){
String reResult="0";
try{
reResult=n.substring(0,n.length()-1);
Double.parseDouble(reResult);
}
catch(NumberFormatException e){reResult="0";}
return reResult;
}
}
两个文件同一目录;
javac Calculate_GUI.java
javac Calculate_Model.java
java Calculate_GUI
㈦ JAVA设计计算器
packagecn.hnpi;
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
{
JButtonb0=newJButton("0");
JButtonb1=newJButton("1");
JButtonb2=newJButton("2");
JButtonb3=newJButton("3");
JButtonb4=newJButton("4");
JButtonb5=newJButton("5");
JButtonb6=newJButton("6");
JButtonb7=newJButton("7");
JButtonb8=newJButton("8");
JButtonb9=newJButton("9");
JButtonjiaButton=newJButton("+");
JButtonjianButton=newJButton("-");
JButtonchengButton=newJButton("*");
JButtonchuButton=newJButton("/");
JButtonyuButton=newJButton("%");
JButtonjjButton=newJButton("+/-");
JButtonsqrtButton=newJButton("sqrt");
JButtondianButton=newJButton(".");
JButtondengButton=newJButton("=");
JButtonButton=newJButton("1/x");
JButtonbackButton=newJButton("Backpace");
JButtoncButton=newJButton("C");
publicdoubleop1;
publicdoubleop2;
publicstaticfinalintJIA=0;
publicstaticfinalintJIAN=1;
publicstaticfinalintCHENG=2;
publicstaticfinalintCHU=3;
publicstaticfinalintJJ=4;
publicstaticfinalintDIAN=5;
publicintcurrent0p=0;
privatebooleanopEnd=false;
JPanelpanel1=newJPanel();
JPanelpanel2=newJPanel();
JPanelpanel3=newJPanel();
JPanelpanel4=newJPanel();
JTextFieldresult=newJTextField(20);
publicCalculator(){
initPanel2();
initPanel3();
panel2.setLayout(newGridLayout(5,4));
panel1.setLayout(newBorderLayout());
panel1.add(panel3,BorderLayout.NORTH);//设置位置
panel1.add(panel2,BorderLayout.CENTER);//设置位置
getContentPane().add(panel1);
addActionListeners();
setSize(260,260);
setLocation(500,300);
setVisible(true);
setDefaultCloseOperation(Calculator.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle("计算器");
}
privatevoidinitPanel2(){
//把组件添加到相应的panel上
panel2.add(b7);
panel2.add(b8);
panel2.add(b9);
panel2.add(chuButton);
panel2.add(b4);
panel2.add(b5);
panel2.add(b6);
panel2.add(chengButton);
panel2.add(b1);
panel2.add(b2);
panel2.add(b3);
panel2.add(jianButton);
panel2.add(b0);
panel2.add(jjButton);
panel2.add(dianButton);
panel2.add(jiaButton);
panel2.add(Button);
panel2.add(yuButton);
panel2.add(sqrtButton);
panel2.add(dengButton);
}
privatevoidaddActionListeners(){
ActionHandlerc=newActionHandler();
b0.addActionListener(c);
b1.addActionListener(c);
b2.addActionListener(c);
b3.addActionListener(c);
b4.addActionListener(c);
b5.addActionListener(c);
b6.addActionListener(c);
b7.addActionListener(c);
b8.addActionListener(c);
b9.addActionListener(c);
jiaButton.addActionListener(c);
dengButton.addActionListener(c);
chengButton.addActionListener(c);
chuButton.addActionListener(c);
jianButton.addActionListener(c);
jjButton.addActionListener(c);
dianButton.addActionListener(c);
sqrtButton.addActionListener(c);
yuButton.addActionListener(c);
Button.addActionListener(c);
backButton.addActionListener(c);
cButton.addActionListener(c);
}
{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b0){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"0");
}
if(e.getSource()==b1){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"1");
opEnd=true;
}
if(e.getSource()==b2){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"2");
opEnd=true;
}
if(e.getSource()==b3){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"3");
opEnd=true;
}
if(e.getSource()==b4){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"4");
opEnd=true;
}
if(e.getSource()==b5){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"5");
opEnd=true;
}
if(e.getSource()==b6){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"6");
opEnd=true;
}
if(e.getSource()==b7){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"7");
opEnd=true;
}
if(e.getSource()==b8){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"8");
opEnd=true;
}
if(e.getSource()==b9){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"9");
opEnd=true;
}
try{
if(e.getSource()==jiaButton){
op1=Double.parseDouble(result.getText());
//2、说明操作数已经输入完毕
opEnd=false;
current0p=JIA;
}
if(e.getSource()==chengButton){
op1=Double.parseDouble(result.getText());
//2、说明操作数已经输入完毕
opEnd=false;
current0p=CHENG;
}
if(e.getSource()==chuButton){
op1=Double.parseDouble(result.getText());
//2、说明操作数已经输入完毕
opEnd=false;
current0p=CHU;
}
if(e.getSource()==jianButton){
op1=Double.parseDouble(result.getText());
//2、说明操作数已经输入完毕
opEnd=false;
current0p=JIAN;
}
if(e.getSource()==jjButton){
Stringtmp=result.getText();
if(tmp.equals("")||tmp.equals("0")){
return;
}
if(tmp.charAt(0)=='-'){
tmp=tmp.substring(1);
}else{
tmp='-'+tmp;
}
result.setText(tmp);
}
if(e.getSource()==dianButton){
Stringtmp=result.getText();
if(tmp.equals("")){
return;
}
if(tmp.indexOf(".")!=-1){
return;
}
tmp=tmp+".";
result.setText(tmp);
}
if(e.getSource()==sqrtButton){
Stringtmp=result.getText();
if(tmp.equals("")){
return;
}
doubled;
d=Double.parseDouble(tmp);//先定义一个double类型的d
if(d<0){
result.setText("不能对负数求平方根!");
return;
}
op2=Math.sqrt(d);
result.setText(op2+"");
}
if(e.getSource()==backButton){
Strings=result.getText();
result.setText("");
for(inti=0;i<s.length()-1;i++){
chara=s.charAt(i);
result.setText(result.getText()+a);
}
}
if(e.getSource()==cButton){
result.setText("0");
opEnd=false;
}
if(e.getSource()==dengButton){
op2=Double.parseDouble(result.getText());
switch(current0p){
caseJIA:
result.setText(op1+op2+"");
break;
caseJIAN:
result.setText(op1-op2+"");
break;
caseCHENG:
result.setText(op1*op2+"");
break;
caseCHU:
if(op2==0){
result.setText("被除数不能为零!");
break;
}
result.setText(op1/op2+"");
break;
}
opEnd=false;
}
}catch(Exceptione1){
result.setText("Wrong");
opEnd=false;
}
}
}
privatevoidinitPanel3(){
panel3.setLayout(newGridLayout(2,1));
panel3.add(result);
panel3.add(panel4);
panel4.setLayout(newGridLayout(1,2));
panel4.add(backButton);
panel4.add(cButton);
//panel3.setPreferredSize(newDimension(260,65));
}
publicstaticvoidmain(String[]args){
Calculatorc=newCalculator();//生成类的实例
}
}
㈧ 用java设计一个计算器界面
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JiSuanQi extends JFrame implements ActionListener {
/**
* Serial Version UID
*/
private static final long serialVersionUID = -169068472193786457L;
/**
* This class help close the Window.
*
*/
private class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
int i;
// Strings for Digit & Operator buttons.
private final String[] str = { "7", "8", "9", "/", "4", "5", "6","*", "1",
"2", "3", "-", ".", "0", "=", "+" };
// Build buttons.
JButton[] buttons = new JButton[str.length];
// For cancel or reset.
JButton reset = new JButton("CE");
// Build the text field to show the result.
JTextField display = new JTextField("0");
/**
* Constructor without parameters.
*/
public JiSuanQi() {
super("Calculator");
// Add a panel.
JPanel panel1 = new JPanel(new GridLayout(4, 4));
// panel1.setLayout(new GridLayout(4,4));
for (i = 0; i < str.length; i++) {
buttons[i] = new JButton(str[i]);
panel1.add(buttons[i]);
}
JPanel panel2 = new JPanel(new BorderLayout());
// panel2.setLayout(new BorderLayout());
panel2.add("Center", display);
panel2.add("East", reset);
// JPanel panel3 = new Panel();
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", panel2);
getContentPane().add("Center", panel1);
// Add action listener for each digit & operator button.
for (i = 0; i < str.length; i++)
buttons[i].addActionListener(this);
// Add listener for "reset" button.
reset.addActionListener(this);
// Add listener for "display" button.
display.addActionListener(this);
// The "close" button "X".
addWindowListener(new WindowCloser());
// Initialize the window size.
setSize(800, 800);
// Show the window.
// show(); Using show() while JDK version is below 1.5.
setVisible(true);
// Fit the certain size.
pack();
}
public void actionPerformed(ActionEvent e) {
Object target = e.getSource();
String label = e.getActionCommand();
if (target == reset)
handleReset();
else if ("0123456789.".indexOf(label) > 0)
handleNumber(label);
else
handleOperator(label);
}
// Is the first digit pressed?
boolean isFirstDigit = true;
/**
* Number handling.
* @param key the key of the button.
*/
public void handleNumber(String key) {
if (isFirstDigit)
display.setText(key);
else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
isFirstDigit = false;
}
/**
* Reset the calculator.
*/
public void handleReset() {
display.setText("0");
isFirstDigit = true;
operator = "=";
}
double number = 0.0;
String operator = "=";
/**
* Handling the operation.
* @param key pressed operator's key.
*/
public void handleOperator(String key) {
if (operator.equals("+"))
number += Double.valueOf(display.getText());
else if (operator.equals("-"))
number -= Double.valueOf(display.getText());
else if (operator.equals("*"))
number *= Double.valueOf(display.getText());
else if (operator.equals("/"))
number /= Double.valueOf(display.getText());
else if (operator.equals("="))
number = Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator = key;
isFirstDigit = true;
}
public static void main(String[] args) {
new JiSuanQi();
}
}
已经验证过,可以使用
出自:http://blog.163.com/light_warm/blog/static/3168104200911298524771/
㈨ java设计一个简单的计算器,要求根据输入的操作数和运算符(+-*/)计算其值
include<iostream>
float a,b,m=1;
string n;
while(m==1){
cin>>a>>b;
cin>>n;
switch(n){
case `源+` : cout<<a<<"+"<<b<<"="<<a+b
<<end1;
break;
case `-` : cout<<a<<"-"<<b<<"="<<a-b
<<end1;
break;
case `*` : cout<<a<<"*"<<b<<"="<<a*b
<<end1;
break;
case `/` : cout<<a<<"/"<<b<<"="<<a/b
<<end1;
break;
case `%` : cout<<a<<"%"<<b<<"="<<a%b
<<end1;
break;
defult: cout<<"输入错误,请检查"
<<end1;
}
cout<<"按1继续,其他键退出:";
cin>>m;
}