用java编写一个简单计算器

编写一个GUI程序,利用第一和第二个文本框分别输入两个整数,在单击运算符按钮时,则在第一和第二个文本框之间显示运算符;单击‘=’按钮,则在第三个文本框中显示第一和第二个文... 编写一个GUI程序,利用第一和第二个文本框分别输入两个整数,在单击运算符按钮时,则在第一和第二个文本框之间显示运算符;单击‘=’按钮,则在第三个文本框中显示第一和第二个文本框的运算结果。
就按照我给的题目,写出图片一样的程序
展开
 我来答
m2ah
2018-01-18 · 知道合伙人互联网行家
m2ah
知道合伙人互联网行家
采纳数:9119 获赞数:28049
毕业于软件技术专业,12年网站建设程序开发经验,多家知名公司网站维护专家,百度资深行家。

向TA提问 私信TA
展开全部

/*

 * @(#)JCalculator.java 1.00 06/17/2015

 */

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

/**

 * A simple calculator program.

 * <p>I saw this program in a QQ group, and help a friend correct it.</p>

 *

 * @author Singyuen Yip

 * @version 1.00 12/29/2009

 * @see JFrame

 * @see ActionListener

 */

public class JCalculator extends JFrame implements ActionListener {

    /**

     * Serial Version UID

     */

    private static final long serialVersionUID = -169068472193786457L;

    /**

     * This class help close the Window.

     * @author Singyuen Yip

     *

     */

    private class WindowCloser extends WindowAdapter {

       public void windowClosing(WindowEvent we) {

           System.exit(0);

       }

    }

 

    int i;

    // Strings for Digit & Operator buttons.

    private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*","1",

           "2", "3", "-", ".", "0", "=", "+" };

    // Build buttons.

    JButton[] buttons = new JButton[str.length];

    // For cancel or reset.

    JButton reset = new JButton("CE");

    // Build the text field to show the result.

    JTextField display = new JTextField("0");

   

    /**

     * Constructor without parameters.

     */

    public JCalculator() {

       super("Calculator");

       // Add a panel.

       JPanel panel1 = new JPanel(new GridLayout(4, 4));

       // panel1.setLayout(new GridLayout(4,4));

       for (i = 0; i < str.length; i++) {

           buttons[i] = new JButton(str[i]);

           panel1.add(buttons[i]);

       }

       JPanel panel2 = new JPanel(new BorderLayout());

       // panel2.setLayout(new BorderLayout());

       panel2.add("Center", display);

       panel2.add("East", reset);

       // JPanel panel3 = new Panel();

       getContentPane().setLayout(new BorderLayout());

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

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

       // Add action listener for each digit & operator button.

       for (i = 0; i < str.length; i++)

           buttons[i].addActionListener(this);

       // Add listener for "reset" button.

       reset.addActionListener(this);

       // Add listener for "display" button.

       display.addActionListener(this);

       // The "close" button "X".

       addWindowListener(new WindowCloser());

       // Initialize the window size.

       setSize(800, 800);

       // Show the window.

       // show(); Using show() while JDK version is below 1.5.

       setVisible(true);

       // Fit the certain size.

       pack();

    }  

   

    public void actionPerformed(ActionEvent e) {

       Object target = e.getSource();

       String label = e.getActionCommand();

       if (target == reset)

           handleReset();

       else if ("0123456789.".indexOf(label) > 0)

           handleNumber(label);

       else

           handleOperator(label);

    }

    // Is the first digit pressed?

    boolean isFirstDigit = true;

    /**

     * Number handling.

     * @param key the key of the button.

     */

    public void handleNumber(String key) {

       if (isFirstDigit)

           display.setText(key);

       else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))

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

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

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

       isFirstDigit = false;

    }

   

    /**

     * Reset the calculator.

     */

    public void handleReset() {

       display.setText("0");

       isFirstDigit = true;

       operator = "=";

    }

 

    double number = 0.0;

    String operator = "=";

   

    /**

     * Handling the operation.

     * @param key pressed operator's key.

     */

    public void handleOperator(String key) {

       if (operator.equals("+"))

           number += Double.valueOf(display.getText());

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

           number -= Double.valueOf(display.getText());

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

           number *= Double.valueOf(display.getText());

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

           number /= Double.valueOf(display.getText());

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

           number = Double.valueOf(display.getText());

       display.setText(String.valueOf(number));

       operator = key;

       isFirstDigit = true;

    }

   

    public static void main(String[] args) {

       new JCalculator();

    }

}


运行界面:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hitzsf
2018-01-18 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1166万
展开全部
package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class Calculator extends JFrame{
JTextField jt1 ,jt2 ,jt3;
JLabel jLabel;
JButton equButton,addButton,reduceButton,mulButton,divButton;
public Calculator() {
super("简易计算器");
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new GridLayout(2, 0));
JPanel uJPanel = new JPanel();
Dimension preferredSize = new Dimension(50, 29);
GridBagConstraints gbc = new GridBagConstraints();
uJPanel.setLayout(new GridBagLayout());
gbc.gridx = GridBagConstraints.RELATIVE;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(1, 2, 1, 2);
jt1 = new JTextField(4);
jLabel = new JLabel();
jLabel.setPreferredSize(new Dimension(10, 29));
jt2 = new JTextField(4);
equButton = new JButton("=");
ActionListener myActionListener = new MyActionListener();
equButton.addActionListener(myActionListener);
jt3 = new JTextField(8);
jt1.setPreferredSize(preferredSize);
jt2.setPreferredSize(preferredSize);
jt3.setPreferredSize(preferredSize);
uJPanel.add(jt1,gbc);
uJPanel.add(jLabel,gbc);
uJPanel.add(jt2,gbc);
uJPanel.add(equButton,gbc);
gbc.weightx = 1;
uJPanel.add(jt3,gbc);
contentPanel.add(uJPanel);
JPanel dJPanel = new JPanel();
dJPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 8, 2));
addButton = new JButton("+");
reduceButton = new JButton("-");
mulButton = new JButton("*");
divButton = new JButton("/");
addButton.addActionListener(myActionListener);
reduceButton.addActionListener(myActionListener);
mulButton.addActionListener(myActionListener);
divButton.addActionListener(myActionListener);
dJPanel.add(addButton);
dJPanel.add(reduceButton);
dJPanel.add(mulButton);
dJPanel.add(divButton);
contentPanel.add(dJPanel);
this.setContentPane(contentPanel);
this.pack();
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
class MyActionListener implements ActionListener{
Double d1,d2,d3;
String operator = "";
public void actionPerformed(ActionEvent e) {
String fun = e.getActionCommand();
if (!fun.equals("=")) {
jLabel.setText(fun);
operator = fun;
}else {
d1 = jt1.getText().equals("")?null:Double.valueOf(jt1.getText());
d2 = jt2.getText().equals("")?null:Double.valueOf(jt2.getText());
d3 = calculate(d1,d2,operator);
jt3.setText(d3==null ? "":d3.toString());
jt3.setCaretPosition(0);
}
}
}
Double calculate(Double d1,Double d2,String operator){
if (d1 == null || d2 == null) {
return null;
}
Double d3 = null;
switch (operator) {
case "+":
d3 = d1 + d2;
break;
case "-":
d3 = d1 - d2;
break;
case "*":
d3 = d1 * d2;
break;
case "/":
d3 = d1 / d2;
break;
}
return d3;
}
public static void main(String[] args) {
new Calculator();
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e860d7f
2018-01-17 · TA获得超过314个赞
知道小有建树答主
回答量:245
采纳率:6%
帮助的人:55.7万
展开全部
我已经写好了。需要的话,撩我
更多追问追答
追问
咋给我
追答
看我的名字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-01-17
展开全部
不错,都有现成的了
~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无疆2468
2018-01-17 · TA获得超过252个赞
知道答主
回答量:140
采纳率:47%
帮助的人:14.2万
展开全部
你这是样本吗?不是已经写好了?
更多追问追答
追问
哪有?那些都是很复杂的,我并不需要那么复杂的
追答
你什么要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式