求一计算器java代码

使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;
(2)完成整数、实数的四则运算(加、减、乘、除);
(3)通过按钮点击实现数据的复位(清零);
(4)实数运算中小数位的精度要一致。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;

class Calucator extends JFrame {

private JTextField tf;
private JPanel panel1, panel2, panel3, panel4;
private JMenuBar myBar;
private JMenu menu1, menu2, menu3;
private JMenuItem editItem1, editItem2, help1, help2, help3;
private JRadioButtonMenuItem seeItem1, seeItem2;
private JCheckBoxMenuItem seeItem3;
private ButtonGroup bgb;
private String back;
private boolean IfResult = true, falg = false;
private String oper = "=";
private double result = 0;
private Num numActionListener;
private DecimalFormat df;

public Calucator(){
super("计算器");

df = new DecimalFormat("0.#######");

this.setLayout(new BorderLayout(10, 5));
panel1 = new JPanel(new GridLayout(1, 3, 10, 10));
panel2 = new JPanel(new GridLayout(4, 5, 5, 5));
panel3 = new JPanel(new GridLayout(5, 1, 5, 5));
panel4 = new JPanel(new BorderLayout(5, 5));

myBar = new JMenuBar();
menu1 = new JMenu("编辑");
menu2 = new JMenu("查看");
menu3 = new JMenu("帮助");

menu1.setFont(new Font("宋体", Font.PLAIN, 12));
menu2.setFont(new Font("宋体", Font.PLAIN, 12));
menu3.setFont(new Font("宋体", Font.PLAIN, 12));

editItem1 = new JMenuItem("复制");
editItem2 = new JMenuItem("粘贴");

seeItem1 = new JRadioButtonMenuItem("科学型");
seeItem2 = new JRadioButtonMenuItem("标准型");
seeItem3 = new JCheckBoxMenuItem("数字分组");

help1 = new JMenuItem("帮助主题");
help2 = new JMenuItem("关于计算器(A)");

bgb = new ButtonGroup();

menu1.add(editItem1);
menu1.add(editItem2);

menu2.add(seeItem1);
menu2.add(seeItem2);
menu2.addSeparator();
menu2.add(seeItem3);

menu3.add(help1);
menu3.add(help2);

myBar.add(menu1);
myBar.add(menu2);
myBar.add(menu3);
this.setJMenuBar(myBar);

numActionListener = new Num();

tf = new JTextField();
tf.setEditable(false);
tf.setBackground(Color.white);
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setText("0");
tf.setBorder(BorderFactory.createLoweredBevelBorder());
init();

}

private void init(){

addButton(panel1, "Backspace", new Clear(), Color.red);
addButton(panel1, "CE", null, Color.red);
addButton(panel1, "C", new Clear(), Color.red);

addButton(panel2, "7", numActionListener, Color.blue);
addButton(panel2, "8", numActionListener, Color.blue);
addButton(panel2, "9", numActionListener, Color.blue);
addButton(panel2, "/", new Signs(), Color.red);
addButton(panel2, "sqrt", new Signs(), Color.blue);

addButton(panel2, "4", numActionListener, Color.blue);
addButton(panel2, "5", numActionListener, Color.blue);
addButton(panel2, "6", numActionListener, Color.blue);
addButton(panel2, "*", new Signs(), Color.red);
addButton(panel2, "%", new Signs(), Color.blue);

addButton(panel2, "1", numActionListener, Color.blue);
addButton(panel2, "2", numActionListener, Color.blue);
addButton(panel2, "3", numActionListener, Color.blue);
addButton(panel2, "-", new Signs(), Color.red);
addButton(panel2, "1/x", new Signs(), Color.blue);

addButton(panel2, "0", numActionListener, Color.blue);
addButton(panel2, "-/+", new Clear(), Color.blue);
addButton(panel2, ".", new Dot(), Color.blue);
addButton(panel2, "+", new Signs(), Color.red);
addButton(panel2, "=", new Signs(), Color.red);

JButton btns = new JButton("calucator");
btns.setBorder(BorderFactory.createLoweredBevelBorder());
btns.setEnabled(false);
btns.setPreferredSize(new Dimension(20, 20));

panel3.add(btns);
addButton(panel3, "MC", null, Color.red);
addButton(panel3, "MR", null, Color.red);
addButton(panel3, "MS", null, Color.red);
addButton(panel3, "M+", null, Color.red);

panel4.add(panel1, BorderLayout.NORTH);
panel4.add(panel2, BorderLayout.CENTER);
this.add(tf, BorderLayout.NORTH);
this.add(panel3, BorderLayout.WEST);
this.add(panel4);

pack();
this.setResizable(false);
this.setLocation(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private void addButton(JPanel panel, String name, ActionListener action, Color color){
JButton bt = new JButton(name);
panel.add(bt);
bt.setForeground(color);
bt.addActionListener(action);
}

public static void main(String[] args) {

new Calucator().setVisible(true);

}

private void getResult (double x){
System.out.println("result"+result+" "+"x"+x);
if(oper == "+"){
result += x;
}else if(oper == "-"){
result -= x;
}else if(oper == "*"){
result *= x;
}else if(oper == "/"){
result /= x;
}else if(oper == "="){
result = x;
}
System.out.println("result"+result+" "+"x"+x);
tf.setText(df.format(result));
System.out.println(df.format(result));
}

class Signs implements ActionListener{

public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if(str.equals("sqrt")){
double i = Double.parseDouble(tf.getText());

if(i>0){
tf.setText(String.valueOf(df.format(Math.sqrt(i))));
}else{
tf.setText("负数不能开平方根");
}

}else if(str.equals("%")){
tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));
}else if(str.equals("1/x")){

if(Double.parseDouble(tf.getText()) == 0){
tf.setText("除数不能为零");
}else{
tf.setText(df.format(1 / Double.parseDouble(tf.getText())));
}

}else{
if(falg){
IfResult = false;
}
if(IfResult){
oper = str;
System.out.println(oper);
}else{
getResult(Double.parseDouble(tf.getText()));
oper = str;
IfResult = true;
}
}
}
}

class Clear implements ActionListener{

public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if(str == "C"){
tf.setText("0");
IfResult = true;
result = 0;
}else if(str == "-/+"){
double i = 0 - Double.parseDouble(tf.getText().trim());
tf.setText(df.format(i));
}else if(str == "Backspace"){
if(Double.parseDouble(tf.getText()) > 0){

if(tf.getText().length() > 1){
tf.setText(tf.getText().substring(0, tf.getText().length() - 1));
}else{
tf.setText("0");
IfResult = true;
}

}else{
if(tf.getText().length() > 2){
tf.setText(tf.getText().substring(0, tf.getText().length() - 1));
}else{
tf.setText("0");
IfResult = true;
}
}
}

}
}

class Num implements ActionListener{

public void actionPerformed(ActionEvent e) {
String srt = e.getActionCommand();
if(IfResult){
tf.setText("");
IfResult = false;
}
tf.setText(tf.getText().trim() + srt);
if(tf.getText().equals("0")){
tf.setText("0");
IfResult = true;
falg = true;
}
}

}

class Dot implements ActionListener{

public void actionPerformed(ActionEvent e) {
IfResult = false;
if(tf.getText().trim().indexOf(".") == -1){
tf.setText(tf.getText() + ".");
}

}

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-07
java做图形界面真的很麻烦,改用C#吧

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网