java计算器的小问题...连续运算
本人是个菜鸟初学者来的..自己写了个计算器..使用时其他没什么问题..就是连续按等号时无法像系统自带的计算器那样连续运算...也就是说如果按 27/3 第一次按等号会出现9,第二次按等号会出现3,第三次按等号后就又输出9了...求高人们解释下..以下是代码..
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2009</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class FrmLayout extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel pnlNorth = new JPanel();
JPanel pnlCenter1 = new JPanel();
JPanel pnlEast = new JPanel();
JPanel pnlSouth = new JPanel();
JPanel pnlWest = new JPanel();
JTextField txt = new JTextField();
GridLayout gridLayout1 = new GridLayout();
JButton btn7 = new JButton();
JButton btnC = new JButton();
JButton btnEqu = new JButton();
JButton btnDiv = new JButton();
JButton btn0 = new JButton();
JButton btnMul = new JButton();
JButton btn3 = new JButton();
JButton btn2 = new JButton();
JButton btn1 = new JButton();
JButton btnSub = new JButton();
JButton btn6 = new JButton();
JButton btn5 = new JButton();
JButton btn4 = new JButton();
JButton btnAdd = new JButton();
JButton btn9 = new JButton();
JButton btn8 = new JButton();
//定义变量
double n1;
double n2;
double result;
double n3;
char op;
boolean flag=true;//代表重新输入数字
boolean flag2=true; //代表是否有运算结果
JPanel pnlCenter = new JPanel();
JPanel pnlCenter2 = new JPanel();
FlowLayout flowLayout1 = new FlowLayout();
JButton btnSqrt = new JButton();
JButton btnchange = new JButton();
JButton btnpoint = new JButton();
JButton btnpencent = new JButton();
JButton btnd = new JButton();
JButton btnCE = new JButton();
JButton btnback = new JButton();
public FrmLayout() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
this.setForeground(Color.black);
setSize(new Dimension(369, 370));
setTitle("计算器");
txt.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
//禁用编辑
txt.setEditable(false);
txt.setText("");
txt.setHorizontalAlignment(SwingConstants.RIGHT);
txt.setBounds(new Rectangle(19, 27, 313, 38));
gridLayout1.setColumns(5);
gridLayout1.setHgap(10);
gridLayout1.setRows(4);
gridLayout1.setVgap(10);
//3--监听器注册
btn0.addActionListener(new FrmLayout_btn0_actionAdapter(this));
btn0.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn0.setText("0");
btn1.setText("1");
btn1.addActionListener(new FrmLayout_btn1_actionAdapter(this));
btn1.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn2.setText("2");
btn2.addActionListener(new FrmLayout_btn2_actionAdapter(this));
btn2.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn3.setText("3");
btn3.addActionListener(new FrmLayout_btn3_actionAdapter(this));
btn3.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn4.setText("4");
btn4.addActionListener(new FrmLayout_btn4_actionAdapter(this));
btn4.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn5.setText("5");
btn5.addActionListener(new FrmLayout_btn5_actionAdapter(this));
btn5.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn6.setText("6");
btn6.addActionListener(new FrmLayout_btn6_actionAdapter(this));
btn6.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn7.setText("7");
btn7.addActionListener(new FrmLayout_btn7_actionAdapter(this));
btn8.setText("8");
btn8.addActionListener(new FrmLayout_btn8_actionAdapter(this));
btn8.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btn9.setText("9");
btn9.addActionListener(new FrmLayout_btn9_actionAdapter(this));
btn9.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btnAdd.setText("+");
btnAdd.addActionListener(new FrmLayout_btnAdd_actionAdapter(this));
btnAdd.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btnSub.setText("-");
btnSub.addActionListener(new FrmLayout_btnSub_actionAdapter(this));
btnSub.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btnMul.setText("*");
btnMul.addActionListener(new FrmLayout_btnMul_actionAdapter(this));
btnMul.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btnDiv.setText("/");
btnDiv.addActionListener(new FrmLayout_btnDiv_actionAdapter(this));
btnDiv.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
btnC.setText("C");
btnC.addActionListener(new FrmLayout_btnC_actionAdapter(this));
btnC.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 14));
btnC.setForeground(Color.red);
btnC.setMaximumSize(new Dimension(71, 25));
btnC.setMinimumSize(new Dimension(71, 25));
btnC.setPreferredSize(new Dimension(90, 25));
btnEqu.setText("=");
btnEqu.addActionListener(new FrmLayout_btnEqu_actionAdapter(this));
pnlCenter.setLayout(null);
pnlCenter2.setBounds(new Rectangle(14, 19, 314, 33));
pnlCenter2.setLayout(flowLayout1);
flowLayout1.setHgap(3);
btnSqrt.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
btnSqrt.setToolTipText("");
btnSqrt.setText("Sqrt");
btnSqrt.addActionListener(new FrmLayout_btnSqrt_actionAdapter(this));
btnchange.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
btnchange.setToolTipText("");
btnchange.setText("+/-");
btnchange.addActionListener(new FrmLayout_btnchange_actionAdapter(this));
btnpoint.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
btnpoint.setText(".");
btnpoint.addActionListener(new FrmLayout_btnpoint_actionAdapter(this));
btnpencent.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
btnpencent.setToolTipText("");
btnpencent.setText("%");
btnpencent.addActionListener(new FrmLayout_btnpencent_actionAdapter(this));
btnd.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
btnd.setToolTipText("");
btnd.setText("1/x");
btnd.addActionListener(new FrmLayout_btnd_actionAdapter(this));
btnCE.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 11));
btnCE.setForeground(Color.red);
btnCE.setPreferredSize(new Dimension(90, 25));
btnCE.setText("CE");
btnCE.addActionListener(new FrmLayout_jButton1_actionAdapter(this));
btnback.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 11));
btnback.setForeground(Color.red);
btnback.setMaximumSize(new Dimension(81, 25));
btnback.setMinimumSize(new Dimension(81, 25));
btnback.setText("BACKSPACE");
btnback.addActionListener(new FrmLayout_btnback_actionAdapter(this));
pnlCenter1.setBounds(new Rectangle(0, 59, 333, 199));
contentPane.add(pnlSouth, java.awt.BorderLayout.SOUTH);
contentPane.add(pnlWest, java.awt.BorderLayout.WEST);
contentPane.add(pnlEast, java.awt.BorderLayout.EAST);
pnlNorth.setPreferredSize(new Dimension(10, 70));
pnlNorth.setLayout(null);
pnlCenter1.setBorder(BorderFactory.createEtchedBorder());
pnlCenter1.setLayout(gridLayout1);
pnlCenter1.add(btn7);
pnlCenter1.add(btn8);
pnlCenter1.add(btn9);
pnlCenter1.add(btnDiv);
pnlCenter1.add(btnSqrt);
pnlCenter1.add(btn4);
pnlCenter1.add(btn5);
pnlCenter1.add(btn6);
pnlCenter1.add(btnMul);
pnlCenter1.add(btnpencent);
pnlCenter1.add(btn1);
pnlCenter1.add(btn2);
pnlCenter1.add(btn3);
pnlCenter1.add(btnSub);
pnlCenter1.add(btnd);
pnlCenter1.add(btn0);
pnlCenter1.add(btnchange);
pnlCenter1.add(btnpoint);
pnlCenter1.add(btnAdd);
pnlCenter1.add(btnEqu);
pnlCenter.add(pnlCenter2);
pnlCenter2.add(btnback);
pnlCenter2.add(btnCE);
pnlCenter2.add(btnC);
pnlCenter.add(pnlCenter1);
contentPane.add(pnlNorth, java.awt.BorderLayout.NORTH);
pnlNorth.add(txt);
contentPane.add(pnlCenter, java.awt.BorderLayout.CENTER);
}
//2--按钮事件处理方法
public void btn0_actionPerformed(ActionEvent e) {
if(flag){//重新输入数字
txt.setText("0");
flag=false;
}else{
if (txt.getText().equals("0")) {
txt.setText("0");
} else {
txt.setText(txt.getText() + "0");
}
}
}