import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class BackgroundFrame extends Frame
{
    BackgroundFrame(String Title){
super(Title);
setLayout(new GridLayout(2,1));
setVisible(true); }
}class NumberButton extends Button
{
NumberButton(String Num){
super(Num);
}
}class KeyboardPanel extends Panel
{
KeyboardPanel(){
setLayout(new GridLayout(4,4));
}
}class Calculator 
{
public static void main(String[] args) 
{
BackgroundFrame B=new BackgroundFrame("tony calculator");
KeyboardPanel K=new KeyboardPanel();
TextField Information=new TextField();
NumberButton N1,N2,N3,N4,N5,N6,N7,N8,N9,N0,Na,Nm,Nmul,Ndiv,Ne,N16;
N1=new NumberButton("1");
N2=new NumberButton("2");
N3=new NumberButton("3");
N4=new NumberButton("4");
N5=new NumberButton("5");
N6=new NumberButton("6");
N7=new NumberButton("7");
N8=new NumberButton("8");
N9=new NumberButton("9");
N0=new NumberButton("0");
Na=new NumberButton("+");
Nm=new NumberButton("-");
Nmul=new NumberButton("*");
Ndiv=new NumberButton("/");
Ne=new NumberButton("=");
N16=new NumberButton(" ");
K.add(N1);
K.add(N2);
K.add(N3);
K.add(N4);
K.add(N5);
K.add(N6);
K.add(N7);
K.add(N8);
K.add(N9);
K.add(N0);
K.add(Na);
K.add(Nm);
K.add(Nmul);
K.add(Ndiv);
K.add(Ne);
K.add(N16);
B.add(Information);
B.add(K);
B.pack();
}
}

解决方案 »

  1.   

    //参考下。回帖10分呀,这个比较简单,原理大概相同,
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;public class Test extends JFrame implements ActionListener { int flag = 0; @Override
    public void actionPerformed(ActionEvent e) {
    // 如果你按了几次 + ,- ,* , /中的一个,你可以具体看是要最后一次呢,还是要最开始的那一次,你自已看下。
    if (e.getSource() == plus) {
    flag = 1;
    operate.setText("    +");
    }
    if (e.getSource() == jian) {
    flag = 2;
    operate.setText("    -");
    }
    if (e.getSource() == cheng) {
    flag = 3;
    operate.setText("    *");
    }
    if (e.getSource() == chu) {
    if (!data2.getText().equals("")
    && Double.parseDouble(data2.getText()) == 0) {
    JOptionPane.showMessageDialog(this, "除数不能为0!");
    data2.setText("");
    // flag = 0;
    }
    flag = 4;
    operate.setText("  /"); }
    if (e.getSource() == clear) {
    data1.setText("");
    data2.setText("");
    result.setText("");
    operate.setText("");
    flag = 0;
    }
    if (e.getSource() == js) {
    String str1 = data1.getText();
    String str2 = data2.getText();
    if (str1.equals("") || str2.equals("")) {
    JOptionPane.showMessageDialog(this, "数据区不能为空");
    } else if (flag == 0)
    JOptionPane.showMessageDialog(this, "操作符不能为空");
    else {
    double a = Double.parseDouble(str1);
    double b = Double.parseDouble(str2);
    double results = 0;
    switch (flag) {
    case 1:
    results = a + b;
    break;
    case 2:
    results = a - b;
    break;
    case 3:
    results = a * b;
    break;
    case 4:
    results = a / b;
    break;
    }
    System.out.println(flag);
    result.setText(Double.toString(results));
    }
    }
    } JButton plus = new JButton("加");
    JButton jian = new JButton("减");
    JButton cheng = new JButton("乘");
    JButton chu = new JButton("除");
    JButton js = new JButton("计算");
    JButton clear = new JButton("清零");

    JLabel label = new JLabel("="); JTextField data1 = new JTextField(10);
    JTextField operate = new JTextField(4);
    JTextField data2 = new JTextField(10);
    JTextField result = new JTextField(10); public Test() {
    this.setTitle("计算器");
    this.setBounds(300, 300, 400, 350);
    this.setBackground(Color.DARK_GRAY);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLayout(new FlowLayout());
    // 加监听。
    plus.addActionListener(this);
    jian.addActionListener(this);
    cheng.addActionListener(this);
    chu.addActionListener(this);
    js.addActionListener(this);
    clear.addActionListener(this); this.add(data1);
    this.add(operate);
    this.add(data2);
    this.add(label);
    this.add(result);
    this.add(plus);
    this.add(jian);
    this.add(cheng);
    this.add(chu);
    this.add(js);
    this.add(clear); } public static void main(String[] args) {
    new Test().setVisible(true);
    }}
      

  2.   

    楼主copy一下1楼的actionPerformed方法,将按钮名称改改,在NumberButton构建器中加个
    this.addActionListener(...)
    就好了。