一般计算器的构成:
一个显示区域 1.10个数字按钮 .和小数点 2.+-*/ 4个算符按 3. CE/C(清空键) 功能键 4.+/-转换 5.=
思路是对按钮侦听,把事件流按上面的方法分为5组,用if分支来实现
如果按了数字/. 就当作字符连接保存在临时变量中(String temp),直到按到 4个算符之一时,就分别保存 前面的表示按过的数字的字符串和 算符(比如存在 str1 和operator中),然后清空temp变量,再等待输入数字 当遇到=号时, 将
temp 和str1 转化为int/Double,将两数按operator中的算符进行计算,放到文本区域上去.... 1.构造界面.
2.对各个按钮实现ActionListener
3.重写ActionListener方法,在此方法中实现上面说的...
就按照这个做 意思我也了解但是但是我不会实现 都很敢 给举个例子也行 比如用加号的话 这个流程怎么写下来
一个显示区域 1.10个数字按钮 .和小数点 2.+-*/ 4个算符按 3. CE/C(清空键) 功能键 4.+/-转换 5.=
思路是对按钮侦听,把事件流按上面的方法分为5组,用if分支来实现
如果按了数字/. 就当作字符连接保存在临时变量中(String temp),直到按到 4个算符之一时,就分别保存 前面的表示按过的数字的字符串和 算符(比如存在 str1 和operator中),然后清空temp变量,再等待输入数字 当遇到=号时, 将
temp 和str1 转化为int/Double,将两数按operator中的算符进行计算,放到文本区域上去.... 1.构造界面.
2.对各个按钮实现ActionListener
3.重写ActionListener方法,在此方法中实现上面说的...
就按照这个做 意思我也了解但是但是我不会实现 都很敢 给举个例子也行 比如用加号的话 这个流程怎么写下来
import java.awt.*;
import java.awt.event.*; public class Calculator extends JFrame implements ActionListener
{
private boolean dotExist, operated, equaled; // 演算時用
private double storedNumber; // 今の結果
private double a,b //aは一回目入力数字 bは二回目以降入力内容
private double s,t // 計算領域
private char lastOperator; // 前の演算子
private JTextField operation; //text
private JButton dot, plus, minus, multi, div, sqrt, equal, clear; // 演算子
private JButton[] numbers; // 数字 // はじめ
public Calculator()
{
setTitle("Calculator");
// 初始化変数
dotExist = false; // 小数点
operated = false; // btn
equaled = false; // if "="
storedNumber = 0;
lastOperator = '?';
// 初始化窗口?量
operation = new JTextField("0");
operation.setEditable(false);
numbers = new JButton[10];
for (int i = 0; i < 10; i++)
numbers[i] = new JButton("" + i);
dot = new JButton(".");
plus = new JButton("+");
minus = new JButton("-");
multi = new JButton("*");
div = new JButton("/");
equal = new JButton("=");
clear = new JButton("AC");
// 画面
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, clear, 5, 3, 1, 1);
} // バーテン メソッド
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton)e.getSource();
if (btn == clear)
{
operation.setText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '?';
a=0;
b=0
S=0
T=0
}
else if (btn == JButton[] numbers)
{
if lastOperator="?"
{
a =a & storedNumber
storedNumbe = a
}
else if
{
b =b & storedNumber
storedNumbe = a
}
} else if (lastOperator="?")
if (btn == plus)
{
operate('+');
equaled = false;
}
else if (btn == minus)
{
operate('-');
equaled = false;
}
else if (btn == multi)
{
operate('*');
equaled = false;
}
else if (btn == div)
{
operate('/');
equaled = false;
}
else if()
{
s=a
a=0
lastOperator = " btn "
}
else if (equaled = ture)
{
if (btn == plus)
{
operate('+');
}
else if (btn == minus)
{
operate('-');
}
else if (btn == multi)
{
operate('*');
}
else if (btn == div)
{
operate('/');
} }
else
{
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i])
{
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(! operated)
operation.setText(operation.getText() + i);
else
{
operation.setText("" + i);
operated = false;
}
}
if (btn == dot && ! dotExist)
{
operation.setText(operation.getText() + ".");
dotExist = true;
}
}
}
// 演算
private void operate(char operator)
{
double t = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '+' && equaled = false)
b=operation.getText()
t=b
b=0
U=s+t
lastOperator == "btn"
operation.getText();
s=U
else if (lastOperator == '-'&& equaled = false)
b=operation.getText()
t=b
b=0
U=s-t
lastOperator == "btn'"
operation.getText();
s=U
else if (lastOperator == '*' && equaled = false)
b=operation.getText()
t=b
b=0
U=s * t
lastOperator == "btn"
operation.getText();
s=U
else if (lastOperator == '/' && equaled = false)
b=operation.getText()
t=b
b=0
U=s * t
lastOperator == "btn"
operation.getText();
s=U
else if (lastOperator == '+' && equaled )
b=operation.getText()
t=b
b=0
U=s + t
lastOperator == "?"
operation.getText();
a=U
else if (lastOperator == '-' && equaled )
b=operation.getText()
t=b
b=0
U=s - t
lastOperator == "?"
operation.getText();
a=U
else if (lastOperator == '*' && equaled )
b=operation.getText()
t=b
b=0
U=s * t
lastOperator == "?"
operation.getText();
a=U
else if (lastOperator == '/' && equaled )
b=operation.getText()
t=b
b=0
U=s / t
lastOperator == "?"
operation.getText();
a=U}
// GridBagLayout メソッド
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
{
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 2, 10, 2);
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton)component).addActionListener(this);
getContentPane().add(component);
}
//windows
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setSize(290, 400);
calc.setVisible(true);
}
}
* Created on 2007-12-5
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style. - Code Templates
*//**
* @author Administrator
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style. - Code Templates
*/import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class jsq {
public static void main(String args[]) {
myframe. kk = new myframe();
}
}//版本声明
class About extends JDialog {
public About(Frame. parent) {
super(parent, true);
initComponents();
pack();
setSize(250, 150);
setLocationRelativeTo(parent);
} private void initComponents() {
jTextField1 = new JTextField();
jTextField2 = new JTextField();
setTitle("版本声明");
setResizable(false);//定义面板大小为固定 addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
closeDialog(evt);
}
}); jTextField1.setEditable(false);
jTextField1.setText("计算器版本号: 1.0 ");
jTextField1.setBackground(Color.lightGray); jTextField2.setEditable(false);
jTextField2.setText(" ---开发者:wk"); getContentPane().add(jTextField1, BorderLayout.NORTH);
getContentPane().add(jTextField2, BorderLayout.CENTER);
} private void closeDialog(WindowEvent evt) {
setVisible(false);
dispose();
} private JTextField jTextField1; private JTextField jTextField2;
}class myframe. extends Frame. implements ActionListener, MouseListener,
WindowListener { MenuBar myB = new MenuBar(); Menu menu1, menu2; char ch; //存储字符串中取得的一个字符 boolean ft1 = false; //标志小数点 boolean ft2 = false; //标志符号位 double firstNum = 0; //存储输入运算符前的数据 double nextNum = 0; //存储输入运算符后的数据 double resultNum = 0; //算得最终浮点型结果 String yunsuanfu = new String(); //存储输入的运算符 String linshiStr = new String(); //存储临时的字符串 String resultStr = new String(); //存储算得的最终字符串型结果 String ss = new String(); //存储鼠标点击的按钮标号 String fuzhi = new String(); //存储复制的字符串 TextField shuru; Button bt1[], bt2[]; Panel pa1, pa2; GridLayout gri1, gri2; myframe() {
super("计算器 1.0");
setBackground(Color.lightGray);//设置面板背景色
setSize(500, 200);
setResizable(false);//定义面板大小为固定
setLayout(new BorderLayout(5, 5));
setMenuBar(myB); menu1 = new Menu("编辑(V)");
MenuItem menu11 = new MenuItem("复制");
MenuItem menu12 = new MenuItem("粘贴");
MenuItem menu13 = new MenuItem("退出");
MenuShortcut msc1 = new MenuShortcut(KeyEvent.VK_C);
MenuShortcut msc2 = new MenuShortcut(KeyEvent.VK_V);
MenuShortcut msc3 = new MenuShortcut(KeyEvent.VK_X);
menu11.setShortcut(msc1);
menu12.setShortcut(msc2);
menu13.setShortcut(msc3);
menu1.add(menu11);
menu1.add(menu12);
menu1.add(menu13);
menu1.addActionListener(this);
myB.add(menu1); menu2 = new Menu("帮助(H)");
menu2.add("帮助主题");
menu2.add("版本声明");
menu2.addActionListener(this);
myB.add(menu2); shuru = new TextField(37);
add(shuru);
shuru.addActionListener(this); gri1 = new GridLayout(1, 3, 10, 10);
pa1 = new Panel();
pa1.setLayout(gri1); gri2 = new GridLayout(4, 5, 10, 5);
pa2 = new Panel();
pa2.setLayout(gri2); bt1 = new Button[3];
String k1[] = { "Sqrt", "Backspace", "1/x" };
for (int i = 0; i < 3; i++) {
bt1[i] = new Button(k1[i]);
bt1[i].setForeground(Color.red);//设置按钮上字体的颜色
pa1.add(bt1[i]);
bt1[i].addActionListener(this);
} bt2 = new Button[20];
String k2[] = { "7", "8", "9", "+", "Exit", "4", "5", "6", "-", "CE",
"1", "2", "3", "*", "C", "0", "+/-", ".", "/", "=" };
for (int i = 0; i < 20; i++) {
bt2[i] = new Button(k2[i]);
pa2.add(bt2[i]);
if (i == 3 || i == 8 || i == 13 || i == 18 || i == 19)
bt2[i].setForeground(Color.red);//设置按钮上字体的颜色
else
bt2[i].setForeground(Color.blue);//设置按钮上字体的颜色
bt2[i].addActionListener(this);
} addMouseListener(this);
addWindowListener(this);
add(shuru, BorderLayout.NORTH);
add(pa1, BorderLayout.CENTER);
add(pa2, BorderLayout.SOUTH);
pack();
show();
} public void actionPerformed(ActionEvent e) {
ss = e.getActionCommand();//存储所按按钮的标识 if (ss.equals("版本声明"))
new About(this).show(); //开平方
try {
if (ss.equals("Sqrt")) {
linshiStr = shuru.getText();
firstNum = Double.parseDouble(linshiStr);
if (firstNum < 0)
throw new FuShu();
if (linshiStr.equals(""))
shuru.setText("");
else if (linshiStr != null) {
resultNum = Math.sqrt(firstNum);
resultStr = Double.toString(resultNum);
shuru.setText(resultStr);
firstNum = resultNum;
}
}
} catch (FuShu ee) {
shuru.setText("请输入一个正数!");
resultStr = shuru.getText();
} //利用循环将当前字符串中的最后一个字母删除
if (ss.equals("Backspace")) {
linshiStr = shuru.getText();
if (!resultStr.equals(linshiStr)) {
shuru.setText("");
for (int i = 0; i < linshiStr.length() - 1; i++) {
ch = linshiStr.charAt(i);
shuru.setText(shuru.getText() + ch);
}
if (shuru.getText().equals("-")
|| shuru.getText().equals("-0.")) {
shuru.setText("");
linshiStr = null;
}
}
}
if (ss.equals("1/x")) {
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
firstNum = Double.parseDouble(linshiStr);
resultNum = 1 / firstNum;
resultStr = Double.toString(resultNum);
shuru.setText(resultStr);
}
} if (ss.equals("0")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("0");
else {
if (linshiStr.equals(""))
shuru.setText("0");
else if (linshiStr.equals("0"))
shuru.setText("0");
else
shuru.setText(linshiStr + "0");
}
} if (ss.equals("1")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("1");
else {
if (linshiStr.equals(""))
shuru.setText("1");
else if (linshiStr.equals("0"))
shuru.setText("1");
else
shuru.setText(linshiStr + "1"); }
} if (ss.equals("2")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("2");
else {
if (linshiStr.equals(""))
shuru.setText("2");
else if (linshiStr.equals("0"))
shuru.setText("2");
else
shuru.setText(linshiStr + "2"); }
} if (ss.equals("3")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("3");
else {
if (linshiStr.equals(""))
shuru.setText("3");
else if (linshiStr.equals("0"))
shuru.setText("3");
else
shuru.setText(linshiStr + "3"); }
} if (ss.equals("4")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("4");
else {
if (linshiStr.equals(""))
shuru.setText("4");
else if (linshiStr.equals("0"))
shuru.setText("4");
else
shuru.setText(linshiStr + "4"); }
} if (ss.equals("5")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("5");
else {
if (linshiStr.equals(""))
shuru.setText("5");
else if (linshiStr.equals("0"))
shuru.setText("5");
else
shuru.setText(linshiStr + "5"); }
} if (ss.equals("6")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("6");
else {
if (linshiStr.equals(""))
shuru.setText("6");
else if (linshiStr.equals("0"))
shuru.setText("6");
else
shuru.setText(linshiStr + "6"); }
} if (ss.equals("7")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("7");
else {
if (linshiStr.equals(""))
shuru.setText("7");
else if (linshiStr.equals("0"))
shuru.setText("7");
else
shuru.setText(linshiStr + "7"); }
} if (ss.equals("8")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("8");
else {
if (linshiStr.equals(""))
shuru.setText("8");
else if (linshiStr.equals("0"))
shuru.setText("8");
else
shuru.setText(linshiStr + "8"); }
} if (ss.equals("9")) {
linshiStr = shuru.getText();
if (resultStr.equals(linshiStr))
shuru.setText("9");
else {
if (linshiStr.equals(""))
shuru.setText("9");
else if (linshiStr.equals("0"))
shuru.setText("9");
else
shuru.setText(linshiStr + "9"); }
} //设置浮点位
if (ss.equals(".")) {
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("0.");
else if (linshiStr.equals("-"))
shuru.setText("-0.");
else {
for (int i = 0; i < linshiStr.length(); i++) {
if (linshiStr.charAt(i) == '.')
ft1 = true;
}
if (ft1 == true)
shuru.setText(linshiStr);
else
shuru.setText(linshiStr + ".");
}
} //加法运算
if (ss.equals("+")) {
ft1 = false;
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
yunsuanfu = "+";
if (firstNum == 0)
firstNum = Double.parseDouble(linshiStr);
shuru.setText("");
linshiStr = "";
}
} //减法运算
if (ss.equals("-")) {
ft1 = false;
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
yunsuanfu = "-";
if (firstNum == 0)
firstNum = Double.parseDouble(linshiStr);
shuru.setText("");
linshiStr = "";
}
} //乘法运算
if (ss.equals("*")) {
ft1 = false;
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
yunsuanfu = "*";
if (firstNum == 0)
firstNum = Double.parseDouble(linshiStr);
shuru.setText("");
linshiStr = "";
}
} //除法运算
if (ss.equals("/")) {
ft1 = false;
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
yunsuanfu = "/";
if (firstNum == 0) {
linshiStr = shuru.getText();
firstNum = Double.parseDouble(linshiStr);
}
shuru.setText("");
linshiStr = "";
}
} //显示运算结果
if (ss.equals("=")) {
ft1 = false;
linshiStr = shuru.getText();
if (linshiStr.equals(""))
shuru.setText("");
else {
nextNum = Double.parseDouble(linshiStr);
if (yunsuanfu == "+")
resultNum = firstNum + nextNum;
else if (yunsuanfu == "-")
resultNum = firstNum - nextNum;
else if (yunsuanfu == "*")
resultNum = firstNum * nextNum;
else if (yunsuanfu == "/")
resultNum = firstNum / nextNum;
resultStr = Double.toString(resultNum);
shuru.setText(resultStr);
yunsuanfu = linshiStr = "";
firstNum = resultNum;
nextNum = 0;
}
} //设置符号位
if (ss.equals("+/-")) {
linshiStr = shuru.getText();
if (!linshiStr.equals("0") && !linshiStr.equals("0.0")) {
for (int i = 0; i < linshiStr.length(); i++)
if (linshiStr.charAt(i) == '-')
ft2 = true;
if (ft2 == true) {
shuru.setText(linshiStr.substring(1));
ft2 = false;
} else
shuru.setText("-" + linshiStr);
}
} //清除当前值
if (ss.equals("CE")) {
ft1 = false;
shuru.setText("");
} //全部清零
if (ss.equals("C")) {
ft1 = false;
shuru.setText("");
yunsuanfu = linshiStr = "";
firstNum = nextNum = 0;
} //单击按钮"Exit"结束小程序
if (ss.equals("Exit"))
System.exit(0); //按Ctrl + c 或是单击菜单"复制"选项,复制当前文本框数据
if (ss.equals("复制"))
fuzhi = shuru.getText(); //按Ctrl + v 或是单击菜单"粘贴"选项,将复制的数据置入文本框中
if (ss.equals("粘贴"))
shuru.setText(fuzhi); //按Ctrl + x 或是单击菜单"退出"选项,结束小程序
if (ss.equals("退出"))
System.exit(0);
} private String sqrt(double b12) {
// TODO 自动生成方法存根
return null;
} // 创建异常
class FuShu extends Exception {
FuShu() {
} public String toString() {
return "请输入一个正数!";
}
} public void windowClosing(MouseEvent e) {
dispose();
System.exit(0);
} public void mouseClicked(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } public void windowActivated(WindowEvent arg0) { } public void windowClosed(WindowEvent arg0) { } public void windowClosing(WindowEvent arg0) { } public void windowDeactivated(WindowEvent arg0) { } public void windowDeiconified(WindowEvent arg0) { } public void windowIconified(WindowEvent arg0) { } public void windowOpened(WindowEvent arg0) { }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Calculator extends JFrame implements ActionListener
{
private boolean dotExist, operated, equaled; // 演算時用
private double storedNumber; // 今の結果
private double a,b //aは一回目入力数字 bは二回目以降入力内容
private double s,t // 計算領域
private char lastOperator; // 前の演算子
private JTextField operation; //text
private JButton dot, plus, minus, multi, div, equal, clear; // 演算子
private JButton[] numbers; // 数字 // はじめ
public Calculator()
{
setTitle("Calculator");
// 初始化変数
dotExist = false; // 小数点
operated = false; // if btn
equaled = false; // if "="
storedNumber = 0;
lastOperator = '?';
// 初始化窗口?量
JTextField operation = new JTextField("0");
operation.setEditable(false);
JButton numbers = new JButton[10];
for (int i = 0; i < 10; i++)
JButton numbers[i] = new JButton("" + i);
JButton dot = new JButton(".");
JButton plus = new JButton("+");
JButton minus = new JButton("-");
JButton multi = new JButton("*");
JButton div = new JButton("/");
JButton equal = new JButton("=");
JButton clear = new JButton("AC");
// 画面
GridBagLayout layout = new GridBagLayout();
getContentPane().setLayout(layout);
addComponent(layout, operation, 0, 0, 4, 1);
addComponent(layout, numbers[1], 1, 0, 1, 1);
addComponent(layout, numbers[2], 1, 1, 1, 1);
addComponent(layout, numbers[3], 1, 2, 1, 1);
addComponent(layout, numbers[4], 2, 0, 1, 1);
addComponent(layout, numbers[5], 2, 1, 1, 1);
addComponent(layout, numbers[6], 2, 2, 1, 1);
addComponent(layout, numbers[7], 3, 0, 1, 1);
addComponent(layout, numbers[8], 3, 1, 1, 1);
addComponent(layout, numbers[9], 3, 2, 1, 1);
addComponent(layout, dot, 4, 0, 1, 1);
addComponent(layout, numbers[0], 4, 1, 1, 1);
addComponent(layout, plus, 1, 3, 1, 1);
addComponent(layout, minus, 2, 3, 1, 1);
addComponent(layout, multi, 3, 3, 1, 1);
addComponent(layout, div, 4, 3, 1, 1);
addComponent(layout, equal, 5, 0, 2, 1);
addComponent(layout, clear, 5, 3, 1, 1);
} // バーテン メソッド
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton)e.getSource();
if (btn == clear)
{
operation.setText("0");
dotExist = false;
storedNumber = 0;
lastOperator = '?';
a = 0;
b = 0;
S = 0;
T = 0;
}
else if (btn == numbers[i])
{
if (lastOperator = '?')
{
a == a & storedNumber;
storedNumbe == a;
}
else if
{
b =b & storedNumber;
storedNumbe = a;
}
}
else if ( btn == plus|btn == plus| btn == plus | btn == plus)
{
if (lastOperator= "?")
if (btn == plus)
{
operate('+');
equaled = false;
}
else if (btn == minus)
{
operate('-');
equaled = false;
}
else if (btn == multi)
{
operate('*');
equaled = false;
}
else if (btn == div)
{
operate('/');
equaled = false;
}
else if( lastOperator = "?")
{
s = a;
a = 0;
lastOperator = " btn ";
}
}
else if ( btn == equal )
{
if (lastOperator == plus)
{
operate('+');
}
else if (lastOperator == minus)
{
operate('-');
}
else if (lastOperator == multi)
{
operate('*');
}
else if (lastOperator == div)
{
operate('/');
} }
else
{
if (equaled)
storedNumber = 0;
for (int i = 0; i < 10; i++)
if (btn == numbers[i])
{
if (operation.getText().equals("0"))
operation.setText("" + i);
else if(! operated)
operation.setText(operation.getText() + i);
else
{
operation.setText("" + i);
operated = false;
}
}
if (btn == dot && ! dotExist)
{
operation.setText(operation.getText() + ".");
dotExist = true;
}
}
}
// 演算
private void operate(char operator)
{
double t = Double.valueOf(operation.getText()).doubleValue();
if (lastOperator == '+' && equaled = false)
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s + t;
lastOperator = "btn";
operation.getText() = storedNumbe;
s = storedNumbe;
else if (lastOperator == '-'&& equaled = false)
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s - t;
lastOperator = "btn";
operation.getText() = storedNumbe;
s = storedNumbe;
}
else if (lastOperator == '*' && equaled = false)
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s * t;
lastOperator = "btn";
operation.getText() = storedNumbe;
s = storedNumbe;
}
else if (lastOperator == '/' && equaled = false)
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s * t;
lastOperator = "btn";
operation.getText() = storedNumbe;
s = storedNumbe;
}
else if (lastOperator == '+' && equaled )
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s + t;
lastOperator = '?';
operation.getText() = storedNumbe;
a = storedNumbe;
}
else if (lastOperator == '-' && equaled )
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s - t;
lastOperator == "?";
operation.getText() = storedNumbe;
a = storedNumbe;
}
else if (lastOperator == '*' && equaled )
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s * t;
lastOperator = "?";
operation.getText() = storedNumbe;
a = storedNumbe;
}
else if (lastOperator == '/' && equaled )
{
b = operation.getText();
t = b;
b = 0;
storedNumbe = s / t;
lastOperator = "?";
operation.getText()= storedNumbe;
a = storedNumbe;
}
}
// GridBagLayout メソッド
private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
{
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 2, 10, 2);
constraints.weightx = 100;
constraints.weighty = 100;
constraints.gridx = col;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints(component, constraints);
if (component instanceof JButton)
((JButton)component).addActionListener(this);
getContentPane().add(component);
}
//windows
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setSize(290, 400);
calc.setVisible(true);
}
}