java计算器源代码网格 java 计算器代码

编写java application程序实现一个简易计算器

Java计算器 源代码:

创新互联是一家专业提供东西湖企业网站建设,专注与成都网站设计、成都网站建设、H5响应式网站、小程序制作等业务。10年已为东西湖众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**********************Java计算器 主类*********************/

public class SunnyCalculator implements ActionListener {

JFrame f;

JMenu mEdit;

JMenu mView;

JMenu mHelp;

JMenuItem mCopy;

JMenuItem mPaste;

JTextField tResult;

JButton bNumber;

JButton bOperator;

JButton bOther;

JButton bM;

boolean isDouble=false;//是否为实数

int opFlag=-1;

static double t1=0,t2=0,t3=0,result=0;

static int opflag1=-1,opflag2=-1,flag=0,resflag=1;

int preOp,currentOp=0;//标准位

double op1=0,op2=0;//操作数

double n3;

StringBuffer buf=new StringBuffer(20);

StringBuffer copyBoard=new StringBuffer(20);//剪贴板

StringBuffer memory=new StringBuffer(20);//M系列

StringBuffer str=new StringBuffer();

//Java计算器 构造器

public SunnyCalculator()

{

f = new JFrame("Sunny计算器_杨梅树的盔甲");

Container contentPane = f.getContentPane();

/**************************Java计算器 菜单的创建*****************************/

JMenuBar mBar = new JMenuBar();

mBar.setOpaque(true);

mEdit = new JMenu("编辑(E)");

mEdit.setMnemonic(KeyEvent.VK_E);

mCopy = new JMenuItem("复制(C)");

mEdit.add(mCopy);

mPaste = new JMenuItem("粘贴(P)");

mEdit.add(mPaste);

mView = new JMenu("查看(V)");

mView.setMnemonic(KeyEvent.VK_V);

mView.add(new JMenuItem("标准型"));

mView.add(new JMenuItem("科学型"));

mView.addSeparator();

mView.add(new JMenuItem("查看分组"));

mHelp = new JMenu("帮助(H)");

mHelp.setMnemonic(KeyEvent.VK_H);

mHelp.add(new JMenuItem("帮助主题"));

mHelp.addSeparator();

mHelp.add(new JMenuItem("关于计算器"));

mBar.add(mEdit);

mBar.add(mView);

mBar.add(mHelp);

f.setJMenuBar(mBar);

contentPane.setLayout(new BorderLayout());

JPanel pTop = new JPanel();

tResult = new JTextField("0.",26);

tResult.setHorizontalAlignment(JTextField.RIGHT);

tResult.setEditable(false);

pTop.add(tResult);

contentPane.add(pTop,BorderLayout.NORTH);

JPanel pBottom = new JPanel();

pBottom.setLayout(new BorderLayout());

JPanel pLeft = new JPanel();

pLeft.setLayout(new GridLayout(5,1,3,3));

bM = new JButton(" ");

bM.setEnabled(false);

pLeft.add(bM);

/*************************Java计算器 功能键定义***************************/

bOther = new JButton("MC");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

bOther = new JButton("MR");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

bOther = new JButton("MS");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

bOther = new JButton("M+");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,2,3,2));

pLeft.add(bOther);

pBottom.add(pLeft,BorderLayout.WEST);

JPanel pRight = new JPanel();

pRight.setLayout(new BorderLayout());

JPanel pUp = new JPanel();

pUp.setLayout(new GridLayout(1,3,3,0));

bOther = new JButton("BackSpace");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new Insets(3,0,3,5));

pUp.add(bOther);

bOther = new JButton("CE");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

bOther = new JButton("C");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

/***************************Java计算器 数字键盘区定义**************************/

JPanel pDown = new JPanel();

pDown.setLayout(new GridLayout(4,5,3,2));

bNumber = new JButton("7");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("8");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("9");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bOperator = new JButton("/");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,0,3,0));

pDown.add(bOperator);

bOperator = new JButton("sqrt");

bOperator.addActionListener(this);

bOperator.setForeground(Color.red);

bOperator.setMargin(new Insets(3,0,3,0));

pDown.add(bOperator);

bNumber = new JButton("4");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

bNumber.setHorizontalTextPosition(JButton.LEFT);

pDown.add(bNumber);

bNumber = new JButton("5");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("6");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bOperator = new JButton("*");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = new JButton("%");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bNumber = new JButton("1");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("2");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bNumber = new JButton("3");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bOperator = new JButton("-");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = new JButton("1/x");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

pDown.add(bOperator);

bNumber = new JButton("0");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new Insets(3,3,3,3));

pDown.add(bNumber);

bOperator = new JButton("+/-");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = new JButton(".");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = new JButton("+");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

bOperator = new JButton("=");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new Insets(3,3,3,3));

pDown.add(bOperator);

pRight.add(pUp,BorderLayout.NORTH);

pRight.add(pDown,BorderLayout.SOUTH);

pBottom.add(pRight,BorderLayout.EAST);

contentPane.add(pBottom,BorderLayout.SOUTH);

f.setSize(new Dimension(320,256));

f.setResizable(false);

f.setVisible(true);

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

}

/************************Java计算器 计算方法区***************************/

public void actionPerformed(ActionEvent e)

{

String s = e.getActionCommand();

if(s.equals("复制(C)"))

{

String temp = tResult.getText().trim();

copyBoard.replace(0, copyBoard.length(), temp);

mPaste.setEnabled(true);

}

else if(s.equals("粘贴(p)"))

{

tResult.setText(copyBoard.toString());

}

else if(s.equals("CE"))

{

//如果是CE则清除文本框

tResult.setText("0.");

}

else if(s.equals("BackSpace"))

{

if(!tResult.getText().trim().equals("0."))

{

//如果文本框中有内容

if(str.length()!=1  str.length()!=0)

{

tResult.setText(str.delete(str.length()-1,str.length()).toString());

}

else

{

tResult.setText("0.");

str.setLength(0);

}

}

op2 = Double.parseDouble(tResult.getText().trim());

}

else if(s.equals("C"))

{

//如果是C删除当前计算

tResult.setText("0.");

op1 = op2 = 0;

str.replace(0, str.length(), " ");

preOp = currentOp = 0;

}

else if(s.equals("MC"))

{

//如果是MC则清除缓冲区

String temp = "";

memory.replace(0, memory.length(), temp);

bM.setText(" ");

}

else if(s.equals("MR"))

{

//如果按键为MR则恢复缓冲区的数到文本框

tResult.setText(memory.toString());

}

else if(s.equals("MS"))

{

//如果按键为MS则将文本框的数存入缓冲区

String s1 = tResult.getText().trim();

memory.replace(0, memory.length(), s1);

bM.setText("M");

}

else if(s.equals("M+"))

{

//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果

String temp1 = tResult.getText().trim();

double dtemp = Double.parseDouble(temp1);

String temp2 = memory.toString();

dtemp += Double.parseDouble(temp2);

temp1 = String.valueOf(dtemp);

memory.replace(0, memory.length(), temp1);

}

else if(s.equals("1/x"))

{

//如果按键为1/x则将文本框中的数据为它的倒数

String temp = tResult.getText().trim();

double dtemp = Double.parseDouble(temp);

tResult.setText(""+1/dtemp);

}

else if(s.equals("sqrt"))

{

//如果按键为sqrt则将文本框中的内容求平方根

String temp = tResult.getText().trim();

double dtemp = Double.parseDouble(temp);

tResult.setText(""+Math.sqrt(dtemp));

}

else if(s.equals("+"))

{

str.setLength(0);

if(currentOp==0)

{

preOp = currentOp = 1;

op2 = 0;

tResult.setText(""+op1);

}

else

{

currentOp = preOp;

preOp = 1;

switch(currentOp){

case 1:

op1 += op2;

tResult.setText(""+op1);

break;

case 2:

op1 -= op2;

tResult.setText(""+op1);

break;

case 3:

op1 *= op2;

tResult.setText(""+op1);

break;

case 4:

op1 /= op2;

tResult.setText(""+op1);

break;

}

}

}

else if(s.equals("-")){

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=2;//op1=op2;op2=0;

tResult.setText(""+op1);

}

else

{

currentOp =preOp;

preOp =2;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("*"))//*

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=3;//op1=op2;op2=1;

tResult.setText(""+op1);//op1=op2;

}

else

{

currentOp =preOp;

preOp =3;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("/"))// /

{

str.setLength(0);

if(currentOp==0)

{

preOp=currentOp=4;//op2=1;

tResult.setText(""+op1);//op1=op2;

}

else

{

currentOp =preOp;

preOp =4;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText(""+op1);break;

case 4:op1=op1/op2;tResult.setText(""+op1);break;

}

}

}

else if(s.equals("="))// =

{

if(currentOp==0)

{

str.setLength(0);

tResult.setText(""+op2);

}

else

{

str.setLength(0);

currentOp =preOp;

switch(currentOp){

case 1:op1=op1+op2;tResult.setText(""+op1);break;

case 2:op1=op1-op2;tResult.setText(""+op1);break;

case 3:op1=op1*op2;tResult.setText("qu

计算器源代码

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

/**

* 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。

* 但还不支持键盘操作。

*/

public class Calculator extends JFrame implements ActionListener {

/** 计算器上的键的显示名字 */

private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",

"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };

/** 计算器上的功能键的显示名字 */

private final String[] COMMAND = { "Backspace", "CE", "C" };

/** 计算器左边的M的显示名字 */

private final String[] M = { " ", "MC", "MR", "MS", "M+" };

/** 计算器上键的按钮 */

private JButton keys[] = new JButton[KEYS.length];

/** 计算器上的功能键的按钮 */

private JButton commands[] = new JButton[COMMAND.length];

/** 计算器左边的M的按钮 */

private JButton m[] = new JButton[M.length];

/** 计算结果文本框 */

private JTextField resultText = new JTextField("0");

// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字

private boolean firstDigit = true;

// 计算的中间结果。

private double resultNum = 0.0;

// 当前运算的运算符

private String operator = "=";

// 操作是否合法

private boolean operateValidFlag = true;

/**

* 构造函数

*/

public Calculator(){

super();

//初始化计算器

init();

//设置计算器的背景颜色

this.setBackground(Color.LIGHT_GRAY);

this.setTitle("计算器");

//在屏幕(500, 300)坐标处显示计算器

this.setLocation(500, 300);

//不许修改计算器的大小

this.setResizable(false);

//使计算器中各组件大小合适

this.pack();

}

/**

* 初始化计算器

*/

private void init() {

// 文本框中的内容采用右对齐方式

resultText.setHorizontalAlignment(JTextField.RIGHT);

// 不允许修改结果文本框

resultText.setEditable(false);

// 设置文本框背景颜色为白色

resultText.setBackground(Color.WHITE);

//初始化计算器上键的按钮,将键放在一个画板内

JPanel calckeysPanel = new JPanel();

//用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));

for (int i = 0; i KEYS.length; i++) {

keys[i] = new JButton(KEYS[i]);

calckeysPanel.add(keys[i]);

keys[i].setForeground(Color.blue);

}

//运算符键用红色标示,其他键用蓝色表示

keys[3].setForeground(Color.red);

keys[8].setForeground(Color.red);

keys[13].setForeground(Color.red);

keys[18].setForeground(Color.red);

keys[19].setForeground(Color.red);

//初始化功能键,都用红色标示。将功能键放在一个画板内

JPanel commandsPanel = new JPanel();

//用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));

for (int i = 0; i COMMAND.length; i++) {

commands[i] = new JButton(COMMAND[i]);

commandsPanel.add(commands[i]);

commands[i].setForeground(Color.red);

}

//初始化M键,用红色标示,将M键放在一个画板内

JPanel calmsPanel = new JPanel();

//用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素

calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));

for (int i = 0; i M.length; i++) {

m[i] = new JButton(M[i]);

calmsPanel.add(m[i]);

m[i].setForeground(Color.red);

}

//下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,

//将文本框放在北部,将calms画板放在计算器的西部。

//新建一个大的画板,将上面建立的command和calckeys画板放在该画板内

JPanel panel1 = new JPanel();

//画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素

panel1.setLayout(new BorderLayout(3, 3));

panel1.add("North", commandsPanel);

panel1.add("Center", calckeysPanel);

//建立一个画板放文本框

JPanel top = new JPanel();

top.setLayout(new BorderLayout());

top.add("Center", resultText);

//整体布局

getContentPane().setLayout(new BorderLayout(3, 5));

getContentPane().add("North", top);

getContentPane().add("Center", panel1);

getContentPane().add("West", calmsPanel);

//为各按钮添加事件侦听器

//都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener

for (int i = 0; i KEYS.length; i++) {

keys[i].addActionListener(this);

}

for (int i = 0; i COMMAND.length; i++) {

commands[i].addActionListener(this);

}

for (int i = 0; i M.length; i++) {

m[i].addActionListener(this);

}

}

/**

* 处理事件

*/

public void actionPerformed(ActionEvent e) {

//获取事件源的标签

String label = e.getActionCommand();

if (label.equals(COMMAND[0])){

//用户按了"Backspace"键

handleBackspace();

} else if (label.equals(COMMAND[1])) {

//用户按了"CE"键

resultText.setText("0");

} else if (label.equals(COMMAND[2])){

//用户按了"C"键

handleC();

} else if ("0123456789.".indexOf(label) = 0) {

//用户按了数字键或者小数点键

handleNumber(label);

// handlezero(zero);

} else {

//用户按了运算符键

handleOperator(label);

}

}

/**

* 处理Backspace键被按下的事件

*/

private void handleBackspace() {

String text = resultText.getText();

int i = text.length();

if (i 0) {

//退格,将文本最后一个字符去掉

text = text.substring(0, i - 1);

if (text.length() == 0) {

//如果文本没有了内容,则初始化计算器的各种值

resultText.setText("0");

firstDigit = true;

operator = "=";

} else {

//显示新的文本

resultText.setText(text);

}

}

}

/**

* 处理数字键被按下的事件

* @param key

*/

private void handleNumber(String key) {

if (firstDigit) {

//输入的第一个数字

resultText.setText(key);

} else if ((key.equals(".")) (resultText.getText().indexOf(".") 0)){

//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面

resultText.setText(resultText.getText() + ".");

} else if (!key.equals(".")) {

//如果输入的不是小数点,则将数字附在结果文本框的后面

resultText.setText(resultText.getText() + key);

}

//以后输入的肯定不是第一个数字了

firstDigit = false;

}

/**

* 处理C键被按下的事件

*/

private void handleC() {

//初始化计算器的各种值

resultText.setText("0");

firstDigit = true;

operator = "=";

}

/**

* 处理运算符键被按下的事件

* @param key

*/

private void handleOperator(String key) {

if (operator.equals("/")) {

//除法运算

//如果当前结果文本框中的值等于0

if (getNumberFromText() == 0.0){

//操作不合法

operateValidFlag = false;

resultText.setText("除数不能为零");

} else {

resultNum /= getNumberFromText();

}

} else if (operator.equals("1/x")) {

//倒数运算

if (resultNum == 0.0){

//操作不合法

operateValidFlag = false;

resultText.setText("零没有倒数");

} else {

resultNum = 1 / resultNum;

}

} else if (operator.equals("+")){

//加法运算

resultNum += getNumberFromText();

} else if (operator.equals("-")){

//减法运算

resultNum -= getNumberFromText();

} else if (operator.equals("*")){

//乘法运算

resultNum *= getNumberFromText();

} else if (operator.equals("sqrt")) {

//平方根运算

resultNum = Math.sqrt(resultNum);

} else if (operator.equals("%")){

//百分号运算,除以100

resultNum = resultNum / 100;

} else if (operator.equals("+/-")){

//正数负数运算

resultNum = resultNum * (-1);

} else if (operator.equals("=")){

//赋值运算

resultNum = getNumberFromText();

}

if (operateValidFlag) {

//双精度浮点数的运算

long t1;

double t2;

t1 = (long) resultNum;

t2 = resultNum - t1;

if (t2 == 0) {

resultText.setText(String.valueOf(t1));

} else {

resultText.setText(String.valueOf(resultNum));

}

}

//运算符等于用户按的按钮

operator = key;

firstDigit = true;

operateValidFlag = true;

}

/**

* 从结果文本框中获取数字

* @return

*/

private double getNumberFromText() {

double result = 0;

try {

result = Double.valueOf(resultText.getText()).doubleValue();

} catch (NumberFormatException e){

}

return result;

}

public static void main(String args[]) {

Calculator calculator1 = new Calculator();

calculator1.setVisible(true);

calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

求Java计算器标准的布局代码

是用awt和swing做的,很好看比单单用AWT做好看

import java.awt.*;

import javax.swing.*;

public class Conputer extends JFrame {

protected Container con = getContentPane();// 指向内容面板

protected JMenuBar a = new JMenuBar();// 菜单条

protected JMenu a1 = new JMenu("编辑(E)");// 菜单1

protected JMenu a2 = new JMenu("查看(V)");// 菜单2

protected JMenu a3 = new JMenu("帮助(H)");// 菜单3

protected JMenuItem a11 = new JMenuItem("复制(C)", 'C');// 菜单1的菜单项

protected JMenuItem a12 = new JMenuItem("粘贴(P)", 'P');// 菜单1的菜单项

protected JMenuItem a21 = new JMenuItem("标准型(T)", 'T');// 菜单2的菜单项

protected JMenuItem a22 = new JMenuItem("科学型(S)", 'S');// 菜单2的菜单项

protected JMenuItem a31 = new JMenuItem("帮助主题(H)", 'H');// 菜单3的菜单项

protected JTextField jtf = new JTextField(30);// 文本框

protected JButton[] jb = new JButton[27];

protected String[] arr = { "Backspace", "CE", "C", "MC", "7", "8", "9", "/", "sqrt",

"MR", "4", "5", "6", "*", "%", "MS", "1", "2", "3", "-", "1/x",

"M+", "0", "+/-", ".", "+", "=" };

protected JPanel jp = new JPanel();// 主面板

protected JPanel m = new JPanel();// 次面板

protected JPanel m1 = new JPanel();// 次次面板

protected JPanel m2 = new JPanel();// 次次面板

protected JPanel m3 = new JPanel();// 次次面板

protected JPanel m4 = new JPanel();// 次次面板

protected JPanel m5 = new JPanel();// 次次面板

protected JPanel m6 = new JPanel();// 次次面板

protected GridLayout glo = new GridLayout(6, 1, 3, 3);// 主网格布局

protected GridLayout glo1 = new GridLayout(1, 3, 3, 3);// 次网格布局

protected GridLayout glo2 = new GridLayout(1, 6, 3, 3);// 次网格布局

protected Conputer(String s) {

super(s);

a1.setMnemonic('E');

a1.add(a11);

a1.add(a12);

a2.setMnemonic('V');

a2.add(a21);

a2.add(a22);

a3.setMnemonic('H');

a3.add(a31);

a.add(a1);

a.add(a2);

a.add(a3);

this.setJMenuBar(a);// 菜单条完成

for (int i = 0; i 27; i++) {

jb[i] = new JButton(arr[i]);

}

jp.setLayout(glo);

jp.add(m1);

m1.add(jtf);

jtf.setEditable(false); jtf.setText("0."); jtf.setForeground(Color.BLUE); jtf.setBackground(Color.WHITE);

jtf.setHorizontalAlignment(JTextField.RIGHT);//文本显示在右边

jp.add(m2);

m2.setLayout(glo1);

m2.add(jb[0]);

m2.add(jb[1]);

m2.add(jb[2]);

jp.add(m3);

m3.setLayout(glo2);

m3.add(jb[3]);

m3.add(jb[4]);

m3.add(jb[5]);

m3.add(jb[6]);

m3.add(jb[7]);

m3.add(jb[8]);

jp.add(m4);

m4.setLayout(glo2);

m4.add(jb[9]);

m4.add(jb[10]);

m4.add(jb[11]);

m4.add(jb[12]);

m4.add(jb[13]);

m4.add(jb[14]);

jp.add(m5);

m5.setLayout(glo2);

m5.add(jb[15]);

m5.add(jb[16]);

m5.add(jb[17]);

m5.add(jb[18]);

m5.add(jb[19]);

m5.add(jb[20]);

jp.add(m6);

m6.setLayout(glo2);

m6.add(jb[21]);

m6.add(jb[22]);

m6.add(jb[23]);

m6.add(jb[24]);

m6.add(jb[25]);

m6.add(jb[26]);

m.add(jp);

con.add(m);

this.setResizable(false);// 不能用鼠标拉伸窗体

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可以关闭窗体

this.setSize(380, 275);

this.setVisible(true);

}

protected Conputer() {

this("计算器");

}

public static void main(String[] args) {

new Conputer("计算器");

}

}

怎么用JAVA编程编写一个计算器?

打开IED:打开自己java编程的软件,采用的是eclipse软件。

建立java工程。

编写类。

编写类的详细步骤

1.类的基本结构:

由于这里用到了界面,所以要进行窗口界面的编程,按钮事件的处理,和计算处理界面;

package MyCaculator;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MyCaculator extends JFrame {

private int add=1,sub=2,mul=3,div=4;

private int op=0;

boolean ifOp;

private String output="0";

private Button[] jba=new Button[]{new Button("7"),new Button("8"),

new Button("9"),new Button("+"),

new Button("4"),new Button("5"),new Button("6"),new Button("-"),

new Button("1"),new Button("2"),new Button("3"),new Button("*"),

new Button("0"),new Button("."),new Button("="),new Button("/")};

private JPanel jpt=new JPanel();

private JPanel jpb=new JPanel();

private JTextField jtf=new JTextField("");

private MyCaculator(){

}

private void operate(String x){

}

public String add(String x){

return output;

}

public String subtract(String x){

return output;

}

public String multiply(String x){

return output;

}

public String divide(String x){

return output;

}

public String Equals(String x){

return output;

}

public void opClean(){

}

class setOperate_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

}

}

class setLabel_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

}

}

public static void main(String[] args) {

}

}

2.建立构造方法:

所谓构造方法就是,对自己的主类进行初始化,代码如下:

private MyCaculator(){

jpt.setLayout(new BorderLayout());

jpt.add(jtf);

this.add(jpt,BorderLayout.NORTH);

jpb.setLayout(new GridLayout(4,4));

for(int i=0;ijba.length;i++){

jpb.add(jba[i]);

if(i==3||i==7||i==11||i==15||i==14)

jba[i].addActionListener(new setOperate_Act());

else

jba[i].addActionListener(new setLabel_Act());

}

this.add(jpb,BorderLayout.CENTER);

this.setSize(250, 200);

this.setResizable(false);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

3.建立数据计算方法

这里的数据计算方法有6个,一个是主方法其他几个是加减乘除的处理方法,代码如下:

private void operate(String x){

double x1=Double.valueOf(x);

double y=Double.valueOf(output);

switch(op){

case 0:output=x;break;

case 1:output=String.valueOf(y+x1);break;

case 2:output =String.valueOf(y-x1);break;

case 3:output =String.valueOf(y*x1);break;

case 4:

if(x1!=0) output=String.valueOf(y/x1);

else output="不能为0";

break;

}

}

public String add(String x){

operate(x);

op=add;

return output;

}

public String subtract(String x){

operate(x);

op=sub;

return output;

}

public String multiply(String x){

operate(x);

op=mul;

return output;

}

public String divide(String x){

operate(x);

op=div;

return output;

}

public String Equals(String x){

operate(x);

op=0;

return output;

}

public void opClean(){

op=0;

output ="0";

}

4.事件处理方法

这里的时间处理方法,没有建立一个整体的方法,二是在为了便于处理的方法,将按钮事件分成两个部分,并采用两个子类来实现,这两个类时内部类要写在主类内部的,代码如下:

class setOperate_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jba[3]){

jtf.setText(add(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[7]){

jtf.setText(subtract(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[11]){

jtf.setText(multiply(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[15]){

jtf.setText(divide(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[14]){

jtf.setText(Equals(jtf.getText()));

ifOp=true;

}

}

}

class setLabel_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

Button tempb=(Button)e.getSource();

if(ifOp){

jtf.setText(tempb.getLabel());

ifOp=false;

}else {

jtf.setText(jtf.getText()+tempb.getLabel());

}

}

}

5.建立main方法:

要想实现我们的代码,我们需在main方法中,实例化我们的对象。

public static void main(String[] args) {

new MyCaculator();

}


当前文章:java计算器源代码网格 java 计算器代码
URL分享:http://scjbc.cn/article/dogshoh.html

其他资讯