import java.awt.*;
import java.awt.event.*;
class MainPanel extends Panel //Screen Panle class {
TextField scn=new TextField(\
String
str[]={\
Button btn[]=new Button[str.length];
Button clear=new Button(\清除\
String temp,op,tempInKey,keyDown; //??
char opChar; //?
public float num1,num2;
boolean flag;
MainPanel()
{
Panel ScreenPanel = new Panel(); //Screen Panel
ScreenPanel.setLayout(new BorderLayout());//Screen in the north
ScreenPanel.add(scn,BorderLayout.CENTER);
scn.disable(); //can not receive event
keyInput kPut=new keyInput(); //keyAction
scn.addKeyListener(kPut);
Panel ButtonPanel = new Panel(); //Button Panel
ButtonPanel.setLayout(new GridLayout(4,4));
for (int i=0;i<16;i++)
{
btn[i]=new Button(str[i]); //new Button
ButtonPanel.add(btn[i]); //add to panel
btn[i].addActionListener(new lsn());
btn[i].addKeyListener(kPut); //buttons be listened
}
Panel ButtonPane2 = new Panel(); //Button Panel
ButtonPane2.add(clear);
clear.addActionListener(new lsn());
clear.addKeyListener(kPut);
setLayout(new BorderLayout()); //Main panel
add(ScreenPanel,BorderLayout.NORTH);
add(ButtonPanel,BorderLayout.CENTER);
add(ButtonPane2,BorderLayout.SOUTH);
}
class lsn implements ActionListener //listener
{
public void actionPerformed(ActionEvent e)
{
temp=scn.getText(); //save the numbers on screen first
if (flag)
{
temp= \
flag=false;
}
if (e.getActionCommand()==\
|e.getActionCommand()==\
{ //if operation clicked
if (scn.getText().equals(\等于时没有内容的处理
return;
num1=Float.parseFloat(scn.getText());
op=e.getActionCommand(); //operation type
scn.setText(\
}
else if (e.getActionCommand()==\
{
try{
if (scn.getText().equals(\等于时没有内容的处理
return;
num2=Float.parseFloat(scn.getText());
if (op==\
num2=num1+num2;
else if (op==\
num2=num1-num2;
else if (op==\
num2=num1*num2;
else if (op==\
{
if(num2 < 0.0000001 & num2>0.00000001)
{
scn.setText(\不能做除数\
flag=true;
return;
}
num2=num1/num2;
}
scn.setText(String.valueOf(num2));
flag=true;
}
catch(ArithmeticException ex)
{
System.out.println(ex.toString());
}
}
else if (e.getActionCommand()==\清除\
scn.setText(\
else //add to screen
scn.setText(temp+e.getActionCommand()); //setText
}
}
class keyInput extends KeyAdapter
{
public void keyPressed (KeyEvent k)
{
if ((k.getKeyCode()>47 & k.getKeyCode()<58) | (k.getKeyCode()>96 & k.getKeyCode()<112)