import java.awt.*;
import java.swing.*;
public class Jtime 
{
   public static void main(String args[]){
       JFrame f=new JFrame("计算器");
       TextField display=new TextField();
       JPanel pan=new JPanel();
       f.getContentPane().add(display,BorderLayout.NORTH);
       f.getContentPane(pan,BorderLayout.CENTER);
       pan.setLayout(new GridLayout(4,4));
      JButton b[]=new JButton[16];
       int i;
       for(i=0;i<=15;i++)
       {
          b[i]=new JButton(i+7+"");
          if(i==3)
              b[i]=new JButton("/");
          if(i>3)
              b[i]=new JButton(i+"");
          if(i==7)
              b[i]=new JButton("*");
          if(i>7)
              b[i]=new JButton(i-7+"");
          if(i==11)
              b[i]=new JButton("+");
          if(i==12)
              b[i]=new JButton(i-12+"");
          if(i==13)
              b[i]=new JButton(".");
          if(i==14)
              b[i]=new JButton("=");
          if(i==15) 
              b[i]=new Button("-");   
          pan.add(b[i]);
       }  
       f.setSize(400,200);
       f.setVisible(true);
     }     

解决方案 »

  1.   

    我给你修改了一下,现在编译能过去了,你再改改:import java.awt.*;
    import javax.swing.*;
    public class Test 

      public static void main(String args[]){ 
          JFrame f=new JFrame("计算器"); 
          TextField display=new TextField(); 
          JPanel pan=new JPanel(); 
          f.getContentPane().add(display,BorderLayout.NORTH); 
          f.getContentPane().add(pan,BorderLayout.CENTER); 
          pan.setLayout(new GridLayout(4,4)); 
          JButton b[]=new JButton[16]; 
          int i; 
          for(i=0;i <=15;i++) 
          { 
              b[i]=new JButton(i+7+""); 
              if(i==3) 
                  b[i]=new JButton("/"); 
              if(i>3) 
                  b[i]=new JButton(i+""); 
              if(i==7) 
                  b[i]=new JButton("*"); 
              if(i>7) 
                  b[i]=new JButton(i-7+""); 
              if(i==11) 
                  b[i]=new JButton("+"); 
              if(i==12) 
                  b[i]=new JButton(i-12+""); 
              if(i==13) 
                  b[i]=new JButton("."); 
              if(i==14) 
                  b[i]=new JButton("="); 
              if(i==15) 
                  b[i]=new JButton("-");  
              pan.add(b[i]); 
          }  
          f.setSize(400,200); 
          f.setVisible(true); 
        }    

      

  2.   

    我这个比你那个牛点
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.*;public class Calculator extends Applet implements ActionListener {
    JTextField result;  // 显示结果
    JTextField memo;  // 显示记忆区中的内容
    JButton dotBtn, equBtn, clsBtn, plusOp, minusOp, mulOp, divOp;  // 操作按钮
    JButton[] numbtn = new JButton[10];  // 数字按钮
    String preTxt;  // 前一操作数
    String curTxt;  // 当前操作数
    String preOp;  // 前一操作符
    boolean isFloat;  // 是否为浮点数
    boolean isNum;
    boolean isDec;  // 是否是小数
    String num[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

    public void init() {
    resize(280,180);  // 设置Applet窗口大小
    setBackground(Color.LIGHT_GRAY);
    preTxt = "";  // 初始化值
    curTxt = "";
    preOp = "";
    isFloat = false;
    isNum = false;
    // 界面对象初始化
    JPanel container = new JPanel();  // 整个计算器的面板
    JPanel dispn = new JPanel();  // 显示区域的面板
    JPanel numpn = new JPanel();  // 数字键区的面板
    numpn.setFont(new Font(null, Font.BOLD, 10));
    result = new JTextField(12);
    result.setEditable(false);  // 禁止编辑文本域
    result.setBackground(Color.WHITE);
    result.setHorizontalAlignment(JTextField.RIGHT);
    memo = new JTextField(5);
    memo.setEditable(false);
    memo.setHorizontalAlignment(JTextField.RIGHT);
    memo.setBackground(new Color(245, 245, 245));
    clsBtn = new JButton("C");
    clsBtn.setForeground(Color.RED);  // 设置前景色
    clsBtn.addActionListener(this);  // 注册监听器
    dotBtn = new JButton(".");
    dotBtn.setForeground(Color.RED);
    dotBtn.addActionListener(this);
    equBtn = new JButton("=");
    equBtn.setForeground(Color.RED);
    equBtn.addActionListener(this);
    plusOp = new JButton("+");
    plusOp.setForeground(Color.RED);
    plusOp.addActionListener(this);
    minusOp = new JButton("-");
    minusOp.setForeground(Color.RED);
    minusOp.addActionListener(this);
    mulOp = new JButton("*");
    mulOp.setForeground(Color.RED);
    mulOp.addActionListener(this);
    divOp = new JButton("/");
    divOp.setForeground(Color.RED);
    divOp.addActionListener(this);
    // 界面布局
    setForeground(Color.blue);  // 前景色设置
    container.setLayout(new BorderLayout());
    dispn.setLayout(new FlowLayout());
    dispn.add(memo);
    dispn.add(result);
    dispn.add(clsBtn);
    // 四行三列,水平、垂直距离都为3
    numpn.setLayout(new GridLayout(4,4,3,3));
    numpn.add(plusOp);
    numpn.add(minusOp);
    numpn.add(mulOp);
    numpn.add(divOp);
    for(int i=0; i<10; i++) {
    numbtn[i] = new JButton(num[i]);
    numbtn[i].setActionCommand(String.valueOf(i));
    numbtn[i].addActionListener(this);
    numpn.add(numbtn[i]);
    }
    numpn.add(dotBtn);
    numpn.add(equBtn);
    this.add(container);
    container.add(dispn, BorderLayout.NORTH);
    container.add(numpn, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent e){
    JButton opBtn = (JButton) e.getSource();
    String str;
    str = opBtn.getText();
    if(opBtn == clsBtn){  // 清屏
    doCls();
    return;
    }
    for(int i=0; i<10; i++){  // 数字输入
    if(opBtn == numbtn[i]){
    disPretxt(str);
    return;
    }
    }
    if(opBtn == dotBtn){  // 小数点输入
    if(!isDec) {
    disPretxt(str);
    isFloat = true;  // 浮点数标志位为真
    isDec = true;
    }
    return;
    }
    // 运算符输入
    if((opBtn == plusOp) || (opBtn == mulOp) || (opBtn == divOp) || (opBtn == minusOp)){
    if(preTxt.equals("")) {
    preTxt = curTxt;
    curTxt = "";
    memo.setText(preTxt);
    result.setText("");
    }
    else if(!curTxt.equals("")){
    doCalcul();
    memo.setText(preTxt);
    result.setText("");
    curTxt = "";
    }
    else{
    memo.setText(preTxt);
    result.setText("");
    }
    if(!(curTxt.equals("")&&preTxt.equals("")))
    preOp = str;
    isNum = false;
    isDec = false;
    return;
    }
    if(opBtn == equBtn){  // 计算结果
    if(!preTxt.equals("")&&!curTxt.equals("")){
    doCalcul();
    memo.setText("");
    result.setText(preTxt);
    curTxt = "";
    preOp = "";
    isNum = true;
    isDec = false;
    }
    return;
    }
    }

    public void disPretxt(String s) {
    if(s.equals(".") && curTxt.equals("")) {
    curTxt += "0.";  // 输入以.开头的数字,则自动补0为“0.”
    } else {
    curTxt += s;
    }
    result.setText(curTxt);
    if(isNum && !preTxt.equals("")){
    preTxt = "";
    isNum = false;
    }
    if(!preOp.equals("")){
    memo.setText(preOp);
    }
    }

    public void disCurtxt(String s) {  // 显示当前操作数
    preOp = s;
    preTxt = "";
    memo.setText(curTxt);
    result.setText("");
    }

    public void doCls() {  // 清屏
    preTxt = "";
    curTxt = "";
    preOp = "";
    isFloat = false;
    isNum = false;
    isDec = false;
    result.setText("");
    memo.setText("");
    }

    public void doCalcul() {  // 运算
    if(isFloat){  // 浮点数运算
    double number1, number2;
    number1 = Double.parseDouble(preTxt);
    number2 = Double.parseDouble(curTxt);
    if(preOp.equals("+")){
    number1 += number2;
    }
    else if(preOp.equals("-")){
    number1 -= number2;
    }
    else if(preOp.equals("*")){
    number1 *= number2;
    }
    else if(preOp.equals("/")){
    if(number2 == 0){
    preTxt = "除数不能为零";
    memo.setText("");
    result.setText(preTxt);
    curTxt = "";
    preTxt = "";
    isFloat = false;
    preOp = "";
    return ;
    }
    number1 /= number2;
    }
    preTxt = String.valueOf(number1);
    } else{  // 整型数运算
    long number1, number2;
    number1 = Long.parseLong(preTxt);
    number2 = Long.parseLong(curTxt);
    if(preOp.equals("+")){
    number1 += number2;
    }
    else if(preOp.equals("-")){
    number1 -= number2;
    }
    else if(preOp.equals("*")){
    number1 *= number2;
    }
    else if(preOp.equals("/")){
    if(number2 == 0){
    preTxt = "除数不能为零";
    memo.setText("");
    result.setText(preTxt);
    curTxt = "";
    preTxt = "";
    isFloat = false;
    preOp = "";
    return ;
    }
    if((number1/number2)*number2 == number1){
    number1 /= number2;
    preTxt = String.valueOf(number1);
    }
    else{
    preTxt = String.valueOf((number1*1.0)/number2);
    isFloat = true;
    }
    return ;
    }
    preTxt = String.valueOf(number1);
    }
    }
    }