参考一下吧:
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;public class AwtCalc extends Frame implements ActionListener
{ private Button[] buttons=new Button[20];
private String[] buttonText={"1","2","3","+","-","4","5","6","*",
"/","7","8","9","^","sqrt","C","0",".","%","="};
private EtextField result; //结果显示框
private Label label;
private Color forecolor,backcolor,fieldcolor;
private Font font ,buttonfont;
int operation,LastButtonType;
int OnScreen,OutOfScreen; public AwtCalc(){
super("计算器");
setBackground(Color.lightGray);
setSize(270,200);
font=new Font("Courier",font.ITALIC,12);
buttonfont=new Font("Courier",font.PLAIN,12);
result=new EtextField(125,18);
label=new Label ("The Result");
setLayout(new FlowLayout());
//初始化按钮
Panel mainpanel=new Panel();
mainpanel.setLayout(new GridLayout(5,1));
for( int i=0;i<20;i++)
{
buttons[i]=new Button (buttonText[i]);
buttons[i].setFont(buttonfont);
buttons[i].addActionListener(this);
}
Panel panel1=new Panel();
panel1.add(result);
panel1.add(label);
mainpanel.add(panel1);
Panel panel2=new Panel();
panel2.setLayout(new GridLayout(1,5,5,5));
panel2.add(buttons[0]);
panel2.add(buttons[1]);
panel2.add(buttons[2]);
panel2.add(new Label(" "));
panel2.add(buttons[3]);
panel2.add(buttons[4]);
mainpanel.add(panel2);
Panel panel3=new Panel();
panel3.setLayout(new GridLayout(1,5,5,5));
panel3.add(buttons[5]);
panel3.add(buttons[6]);
panel3.add(buttons[7]);
panel3.add(new Label(" "));
panel3.add(buttons[8]);
panel3.add(buttons[9]);
mainpanel.add(panel3);
Panel panel4=new Panel();
panel4.setLayout(new GridLayout(1,5,5,5));
panel4.add(buttons[10]);
panel4.add(buttons[11]);
panel4.add(buttons[12]);
panel4.add(new Label(" "));
panel4.add(buttons[13]);
panel4.add(buttons[14]);
mainpanel.add(panel4);
Panel panel5=new Panel();
panel5.setLayout(new GridLayout(1,5,5,5));
// panel5.setLayout(new FlowLayout(FlowLayout.CENTER,2,2));
// panel5.reshape(100,55,160,130);
panel5.add(buttons[15]);
panel5.add(buttons[16]);
panel5.add(buttons[17]);
panel5.add(new Label(" "));
panel5.add(buttons[18]);
panel5.add(buttons[19]);
mainpanel.add(panel5);
add("Center",mainpanel);
buttons[15].setForeground(Color.red);
result.setBackground(Color.white);
show();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){
String str=e.getActionCommand();
if (str.equals("C"))
resetCalc();
else if (str.equals("+"))
setoperation(1);
else if (str.equals("-"))
setoperation(2);
else if (str.equals("*"))
setoperation(3);
else if(str.equals("/"))
setoperation(4);
else if(str.equals("="))
doOperation();
else if(str.equals("^"))
doOperation();
else if(str.equals("sqrt"))
doOperation();
else if(str.equals("%"))
doOperation();
else if(str.equals("."))
doOperation();
else{
if(LastButtonType==0)
OnScreen=OnScreen*10+Integer.valueOf(str).intValue();
else
OnScreen= Integer.valueOf(str).intValue();
}
result.setText(String.valueOf(OnScreen));
}
public void resetCalc(){
LastButtonType=0;
OnScreen=0;
operation=0;
OutOfScreen=0;
}
public void setoperation(int op)
{
operation=op;
LastButtonType=op;
OutOfScreen=OnScreen;
}
public void doOperation()
{
int temp=0;
switch (operation)
{
case 1:
temp=OnScreen+OutOfScreen;
break;
case 2:
temp=OnScreen-OutOfScreen;
break;
case 3:
temp=OnScreen*OutOfScreen;
break;
case 4:
temp=OnScreen/OutOfScreen;
break;
}
OutOfScreen=OnScreen;
OnScreen=temp;
}
public void paint(Graphics g)
{
g.drawRect(0,0,getSize().width-1,getSize().height-1);
g.drawLine(0,0,0,getSize().height);
}
public static void main(String[] args){
AwtCalc ca=new AwtCalc();
}
}
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;public class AwtCalc extends Frame implements ActionListener
{ private Button[] buttons=new Button[20];
private String[] buttonText={"1","2","3","+","-","4","5","6","*",
"/","7","8","9","^","sqrt","C","0",".","%","="};
private EtextField result; //结果显示框
private Label label;
private Color forecolor,backcolor,fieldcolor;
private Font font ,buttonfont;
int operation,LastButtonType;
int OnScreen,OutOfScreen; public AwtCalc(){
super("计算器");
setBackground(Color.lightGray);
setSize(270,200);
font=new Font("Courier",font.ITALIC,12);
buttonfont=new Font("Courier",font.PLAIN,12);
result=new EtextField(125,18);
label=new Label ("The Result");
setLayout(new FlowLayout());
//初始化按钮
Panel mainpanel=new Panel();
mainpanel.setLayout(new GridLayout(5,1));
for( int i=0;i<20;i++)
{
buttons[i]=new Button (buttonText[i]);
buttons[i].setFont(buttonfont);
buttons[i].addActionListener(this);
}
Panel panel1=new Panel();
panel1.add(result);
panel1.add(label);
mainpanel.add(panel1);
Panel panel2=new Panel();
panel2.setLayout(new GridLayout(1,5,5,5));
panel2.add(buttons[0]);
panel2.add(buttons[1]);
panel2.add(buttons[2]);
panel2.add(new Label(" "));
panel2.add(buttons[3]);
panel2.add(buttons[4]);
mainpanel.add(panel2);
Panel panel3=new Panel();
panel3.setLayout(new GridLayout(1,5,5,5));
panel3.add(buttons[5]);
panel3.add(buttons[6]);
panel3.add(buttons[7]);
panel3.add(new Label(" "));
panel3.add(buttons[8]);
panel3.add(buttons[9]);
mainpanel.add(panel3);
Panel panel4=new Panel();
panel4.setLayout(new GridLayout(1,5,5,5));
panel4.add(buttons[10]);
panel4.add(buttons[11]);
panel4.add(buttons[12]);
panel4.add(new Label(" "));
panel4.add(buttons[13]);
panel4.add(buttons[14]);
mainpanel.add(panel4);
Panel panel5=new Panel();
panel5.setLayout(new GridLayout(1,5,5,5));
// panel5.setLayout(new FlowLayout(FlowLayout.CENTER,2,2));
// panel5.reshape(100,55,160,130);
panel5.add(buttons[15]);
panel5.add(buttons[16]);
panel5.add(buttons[17]);
panel5.add(new Label(" "));
panel5.add(buttons[18]);
panel5.add(buttons[19]);
mainpanel.add(panel5);
add("Center",mainpanel);
buttons[15].setForeground(Color.red);
result.setBackground(Color.white);
show();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void actionPerformed (ActionEvent e){
String str=e.getActionCommand();
if (str.equals("C"))
resetCalc();
else if (str.equals("+"))
setoperation(1);
else if (str.equals("-"))
setoperation(2);
else if (str.equals("*"))
setoperation(3);
else if(str.equals("/"))
setoperation(4);
else if(str.equals("="))
doOperation();
else if(str.equals("^"))
doOperation();
else if(str.equals("sqrt"))
doOperation();
else if(str.equals("%"))
doOperation();
else if(str.equals("."))
doOperation();
else{
if(LastButtonType==0)
OnScreen=OnScreen*10+Integer.valueOf(str).intValue();
else
OnScreen= Integer.valueOf(str).intValue();
}
result.setText(String.valueOf(OnScreen));
}
public void resetCalc(){
LastButtonType=0;
OnScreen=0;
operation=0;
OutOfScreen=0;
}
public void setoperation(int op)
{
operation=op;
LastButtonType=op;
OutOfScreen=OnScreen;
}
public void doOperation()
{
int temp=0;
switch (operation)
{
case 1:
temp=OnScreen+OutOfScreen;
break;
case 2:
temp=OnScreen-OutOfScreen;
break;
case 3:
temp=OnScreen*OutOfScreen;
break;
case 4:
temp=OnScreen/OutOfScreen;
break;
}
OutOfScreen=OnScreen;
OnScreen=temp;
}
public void paint(Graphics g)
{
g.drawRect(0,0,getSize().width-1,getSize().height-1);
g.drawLine(0,0,0,getSize().height);
}
public static void main(String[] args){
AwtCalc ca=new AwtCalc();
}
}
不太好