Java设计计算器

头像
么么哒狂人   2021-09-18   6053浏览
已有152条回答
头像
济南别墅装修
2024-03-28

****************************************************************

写了一天,终于写完了。

****************************************************************

说明:

类Calc.java出了界面符合你的要求外,还有以下优点:

1. 对输入内容进行校验,如果是非法字符(如字母),不响应键盘,而且单个文本框只能输入一个小数点;

2. 使用Windows界面风格;

3. 采用大数计算,更精准;

4. 其它……

****************************************************************

代如下:

****************************************************************

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.math.BigDecimal;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.UIManager;

/**

* @author Godwin

* @version 2010-05-16

*/

public class Calc extends JFrame implements ActionListener {

JTextField number1Text;

JTextField number2Text;

JTextField resultText;

public Calc() {

this.setTitle("计算器");

/*

* 菜单栏

*/

// Operation菜单

JMenuItem addMenuItem = new JMenuItem("Add");

addMenuItem.setMnemonic('a');

JMenuItem subtractMenuItem = new JMenuItem("Subtract");

subtractMenuItem.setMnemonic('s');

JMenuItem multiplyMenuItem = new JMenuItem("Multiply");

multiplyMenuItem.setMnemonic('m');

JMenuItem divideMenuItem = new JMenuItem("Divide");

divideMenuItem.setMnemonic('d');

JMenu operationFile = new JMenu("Operation");

operationFile.setMnemonic('o');

operationFile.add(addMenuItem);

operationFile.add(subtractMenuItem);

operationFile.add(multiplyMenuItem);

operationFile.add(divideMenuItem);

// Exit菜单

JMenu exitMenu = new JMenu("Exit");

exitMenu.setMnemonic('x');

JMenuItem exitItem = new JMenuItem("Exit");

exitItem.setMnemonic('x');

exitItem.addActionListener(new ExitActionListener());

exitMenu.add(exitItem);

// Operation和Exit菜单

JMenuBar menubar = new JMenuBar();

menubar.add(operationFile);

menubar.add(exitMenu);

/*

* 作数和结果

*/

JLabel number1Label = new JLabel("Number 1");

number1Text = new JTextField(6);

JLabel number2Label = new JLabel("Number 2");

number2Text = new JTextField(6);

JLabel resultLabel = new JLabel("Result");

resultText = new JTextField(10);

resultText.setEditable(false);

JPanel operandPanel = new JPanel(new FlowLayout());

operandPanel.add(number1Label);

operandPanel.add(number1Text);

operandPanel.add(number2Label);

operandPanel.add(number2Text);

operandPanel.add(resultLabel);

operandPanel.add(resultText);

/*

* 作符

*/

JButton addButton = new JButton("Add");

JButton subtractButton = new JButton("Subtract");

JButton multiplyButton = new JButton("Multiply");

JButton divideButton = new JButton("Divide");

JPanel operatorPanel = new JPanel(new FlowLayout());

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);

Toolkit tool = Toolkit.getDefaultToolkit();

Dimension screen = 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(new VerifyInputKeyAdapter());

number2Text.addKeyListener(new VerifyInputKeyAdapter());

// 按钮

addButton.addActionListener(this);

subtractButton.addActionListener(this);

multiplyButton.addActionListener(this);

divideButton.addActionListener(this);

}

class VerifyInputKeyAdapter extends KeyAdapter {

public void keyTyped(KeyEvent e) {

char c = 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();

}

}

}

}

class ExitActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

}

public void actionPerformed(ActionEvent e) {

String operand1 = number1Text.getText();

BigDecimal big1 = BigDecimal.valueOf(Double.valueOf(operand1));

String operand2 = number2Text.getText();

BigDecimal big2 = BigDecimal.valueOf(Double.valueOf(operand2));

if ((!(operand1.equals(""))) && (operand1 != null)

&& (!(operand2.equals(""))) && (operand2 != null)) {

String name = e.getSource().getClass().getSimpleName();

String operator = "";

if (name.equals("JButton")) {

JButton b = (JButton) (e.getSource());

operator = b.getText();

} else if (name.equals("JMenuItem")) {

JMenuItem m = (JMenuItem) e.getSource();

operator = m.getText();

}

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

resultText.setText(String.valueOf(big1.add(big2)));

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

resultText.setText(String.valueOf(big1.subtract(big2)));

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

resultText.setText(String.valueOf(big1.multiply(big2)));

} else if (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();

}

}

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

new Calc();

}

}

****************************************************************

运行结果如下:

27

头像
游客小孩儿
2023-08-08

我晕,谁会为你写这么一堆,而且很没意义的代?
……

131

头像
潘潘吃吃吃啊
2023-05-30

先等着吧,写好了再给你
有邮箱没??写好了发给你

64

头像
wangxinrose
2021-12-11

就这么点要求都100分啊,太简单了

209

相关问题

Java设计计算器
天使之懿727 1970-01-01

用java设计计算器
fionazhang77 1970-01-01

java计算器课设
起舞徘徊风露下 1970-01-01

用Java设计一个简单的计算器。
疯疯丫头315 1970-01-01

设计一个简单的计算器,能够对两个数据进行“加、减、乘、除”运算。要求:合理应用布局设计,注重界面美观、友好,要求处理NumberFormatException异常。

急求java计算器 课程设计报告
chocolate宸 1970-01-01

急求java计算器 课程设计报告

高手帮忙用Java设计个计算器程序!
真南真北 1970-01-01

用Java实现一个applet计算器程序,要有+,-,*,/功能。会做的朋友帮帮忙,小弟先谢过各位了!还有更简单点的答案吗?

急求java 计算器课程设计报告,有源码,
小琳子雄霸天下 1970-01-01

急求java 计算器课程设计报告,有源码要求内容,程序开发背景,设计过程,重点难点,设计说明,程序调试,程序运行,那位高手帮我写写呀!谢谢了!!!

vb计算器设计
欧阳安Muse 1970-01-01

vb计算器设计要加减乘除,小数点,倒数,还有清零

java应用小程序计算器
天道酬勤1212 1970-01-01

是期末的课程设计阿!或是什么日历阿,画图程序等等一类都是可以的能较差就行啊

最新问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

热门问答

排水论文在哪发?
伊兰0518 2021-09-19

小区市外排水论文发哪个杂志可以呢?我需要发表一篇这方面的论文。

word转pdf,为什么不显示图片图片?
花花的老妈 2021-09-19

我想把论文从word格式转换成PDF格式,用的金山WPS,可转换完成之后,里面的流程图就不见了,空白~~这是为什么呢?谁能帮我解决一下!谢谢!

公众号与小程序有什么区别
汤糖躺烫湯 2021-09-19

公众号与小程序有什么区别

如何制作电子小报
dream959595 2021-09-19

镀铬什么意思
autumngold 2021-09-19

镀铬什么意思

中国电影艺术的思想
幸福顺延 2021-09-19

中国针灸大纲作者是谁?
王子麻麻 2021-09-19

Coptyright © www.lw85.com电脑版