import java.awt.*;
//import java.util.*;
import javax.swing.*;//import java.awt.event.*;
public class CalFrame extends JFrame {
    /**

*/
    private static final long serialVersionUID = 833449942376457328L;
    JPanel Main1,  Main2,Main3;
    JButton btncount, btnclean;
    JLabel lbnnumber1, lbnnumber2, lbresult;
    JTextField tetumber1, tetumber2, tetresult;
    JRadioButton rbj, rbji, rbche, rbchu;
        public CalFrame() {
        super("简易计算器");
        lbnnumber1 = new JLabel("第一个数");
        lbnnumber2 = new JLabel("第二个数");
        lbresult = new JLabel("结        果");
        tetumber1 = new JTextField(10);
        tetumber2 = new JTextField(10);
        tetresult = new JTextField(10);
        rbj = new JRadioButton("+");
        //rbj.setSelected(true);
        rbji = new JRadioButton("-");
        rbche = new JRadioButton("*");
        rbchu = new JRadioButton("/");
        btncount = new JButton("计算");
        btnclean = new JButton("清除");  
        Main1 = new JPanel();
        Main1.setLayout(new GridLayout(3, 2)); 
        Main2 = new JPanel();    
        Main3 = new JPanel();
        Main1.add(lbnnumber1);
        Main1.add(tetumber1);
        Main1.add(lbnnumber2);
        Main1.add(tetumber2);
        Main1.add(lbresult);        
        Main1.add(tetresult);
        Main2.add(rbj);
        Main2.add(rbji);
        Main2.add(rbche);
        Main2.add(rbchu);
        Main2.add(btncount);
        Main2.add(btnclean);
         Main3.add(Main1);
         Main3.add(Main2);
        // ((RootPaneContainer) Main3).setContentPane(Main3);*/
        this.add(Main3); //Add panel to JFrame
        setSize(550,200);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }    public static void main(String[] args) {
        new CalFrame();
    }
}
//怎么实现运算

解决方案 »

  1.   

    每个button都得add一个actionListener,然后建个匿名的inner class来implement actionListener的actionperformed方法。
      

  2.   

    btncount = new JButton("计算");
    btncount.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    double n1 = Double.parseDouble(tetumber1.getText());
    double n2 = Double.parseDouble(tetumber2.getText());
    if (rbj.isSelected()) {
    tetresult.setText(Double.toString(n1 + n2));
    } else if (rbji.isSelected()) {
    tetresult.setText(Double.toString(n1 - n2));
    } else if (rbche.isSelected()) {
    tetresult.setText(Double.toString(n1 * n2));
    } else if (rbchu.isSelected()) {
    tetresult.setText(Double.toString(n1 / n2));
    }
    }
    });
    btnclean = new JButton("清除");
    btnclean.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    tetumber1.setText("");
    tetumber2.setText("");
    tetresult.setText("");
    rbji.setSelected(false);
    rbche.setSelected(false);
    rbchu.setSelected(false);
    btncount.setSelected(false);
    }
    });
      

  3.   

    忘了件事,输出时最好用Formatter来输出,formatter.format("%2.10f", n1 / n2).toString();
      

  4.   


    import java.awt.*; //import java.util.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;//import java.awt.event.*;
    public class CalFrame extends JFrame implements ActionListener {
    /**
    *  
    */
    private static final long serialVersionUID = 833449942376457328L;
    JPanel Main1, Main2, Main3;
    JButton btncount, btnclean;
    JLabel lbnnumber1, lbnnumber2, lbresult;
    JTextField tetumber1, tetumber2, tetresult;
    JRadioButton rbj, rbji, rbche, rbchu;
    ButtonGroup bg; public CalFrame() {
    super("简易计算器");
    lbnnumber1 = new JLabel("第一个数");
    lbnnumber2 = new JLabel("第二个数");
    lbresult = new JLabel("结果");
    tetumber1 = new JTextField(10);
    tetumber2 = new JTextField(10);
    tetresult = new JTextField(10);
    tetresult.setEditable(false);//结果只能读
    rbj = new JRadioButton("+");
    rbj.setSelected(true);
    rbji = new JRadioButton("-");
    rbche = new JRadioButton("*");
    rbchu = new JRadioButton("/");
    btncount = new JButton("计算");
    btncount.addActionListener(this);//添加指定的动作侦听器
    btnclean = new JButton("清除");
    btnclean.addActionListener(this);//添加指定的动作侦听器
    Main1 = new JPanel();
    Main1.setLayout(new GridLayout(3, 2));
    Main2 = new JPanel();
    Main3 = new JPanel();
    //只能选中一个
    bg = new ButtonGroup();
    bg.add(rbj);
    bg.add(rbji);
    bg.add(rbche);
    bg.add(rbchu);

    Main1.add(lbnnumber1);
    Main1.add(tetumber1);
    Main1.add(lbnnumber2);
    Main1.add(tetumber2);
    Main1.add(lbresult);
    Main1.add(tetresult);
    Main2.add(rbj);
    Main2.add(rbji);
    Main2.add(rbche);
    Main2.add(rbchu);
    Main2.add(btncount);
    Main2.add(btnclean);
    Main3.add(Main1);
    Main3.add(Main2);
    // ((RootPaneContainer) Main3).setContentPane(Main3);*/
    this.add(Main3); // Add panel to JFrame
    setSize(550, 200);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } public static void main(String[] args) {
    new CalFrame();
    } //处理事件
    public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("计算")) {
    if(rbj.isSelected()) {
    calc('+');
    } else if(rbji.isSelected()) {
    calc('-');
    } else if(rbche.isSelected()) {
    calc('*');
    } else if(rbchu.isSelected()) {
    calc('/');
    }
    } else if(e.getActionCommand().equals("清除")) {
    tetumber1.setText("");
    tetumber2.setText("");
    tetresult.setText("");
    }
    }

    //计算
    private void calc(char operator) {
    double temp;
    switch(operator) {
    case '+':
    temp = Double.parseDouble(tetumber1.getText()) + Double.parseDouble(tetumber2.getText());
    tetresult.setText(Double.toString(temp));
    break;
    case '-':
    temp = Double.parseDouble(tetumber1.getText()) - Double.parseDouble(tetumber2.getText());
    tetresult.setText(Double.toString(temp));
    break;
    case '*':
    temp = Double.parseDouble(tetumber1.getText()) * Double.parseDouble(tetumber2.getText());
    tetresult.setText(Double.toString(temp));
    break;
    case '/':
    if(Double.parseDouble(tetumber2.getText())  != 0) {
    temp = Double.parseDouble(tetumber1.getText()) / Double.parseDouble(tetumber2.getText());
    tetresult.setText(Double.toString(temp));
    } else {
    tetresult.setText("除数不能为零");
    }
    break;
    }
    }
    }