要完成一个学习成绩输入框, 我先用普通的Java程序进行实现.
唯一问题是, 布局管理器选择不当, 造成排版问题.
该如何改进, 使用哪种管理器实现 Label 和TextField 的下线对齐
要将这段程序进行改写成Applet形式, 该何从下手.  
在init()中对控件进行创建和添加监听. 作为控件操作的一部分, IsOK Isfloat 等判定函数放在哪个方法中?
Applet中start()  stop()  destroy()  中各自需放入哪些程序, 请高手给我必要的指点, 在此先行表示感谢. 祝您新年快乐.import java.awt.*;
import java.awt.event.*;public class Mygridbag extends Frame implements ActionListener  
//这里实现actionlistener接口,不要一个个new ActionListener
{  
Button cmdSum, cmdAve, cmdOp;

Label[] lbl=new Label[5];  
TextField[] txtF = new TextField[5];
TextField txtFF;
GridBagLayout gridBagLayout;
GridBagConstraints gridBagConstraints; public Mygridbag(String s)
{
    super(s);
    gridBagLayout = new GridBagLayout();
    setLayout(gridBagLayout);   
    gridBagConstraints = new GridBagConstraints();     //LABEL
lbl[0] = new Label("    语文:  ");
lbl[1] = new Label("    数学:  ");
lbl[2] = new Label("    英语:  ");
lbl[3] = new Label("    总分:  ");
lbl[4] = new Label("平均成绩:  ");

for(int i=0; i<5; i++)
{
addComponent(lbl[i], i+1, 1, 1, 1); 


  // TextField
    for(int i=0; i<5; i++)
    {
     txtF[i] = new TextField("", 10);
    }

    for(int i=0; i<3; i++)
    {
     addComponent(txtF[i], i+1, 2, 2, 1); 
    }
    addComponent(txtF[3], 4, 2, 3, 1); 
    addComponent(txtF[4], 6, 2, 3, 1); 
        
    txtFF = new TextField("", 25);  
    addComponent(txtFF, 7, 2, 4, 1); 

txtF[3].setEnabled(false);
txtF[4].setEnabled(false);
txtFF.setEnabled(false);

    //BUTTON                    
cmdSum = new Button("总分计算");
cmdAve = new Button("计算平均分"); 
cmdOp  = new Button("学习评定");
        
    addComponent(cmdSum, 4, 3, 1, 1); 
addComponent(cmdAve, 5, 3, 1, 1); 
addComponent(cmdOp , 6, 1, 1, 1); 

cmdSum.setEnabled(true);
cmdAve.setEnabled(false);
    cmdOp.setEnabled(false);

    cmdSum.addActionListener(this);  //分别监听action事件
    cmdAve.addActionListener(this);
     cmdOp.addActionListener(this);
  }//构造
 
  
    //独立的actionPerformed方法
    public void actionPerformed(ActionEvent e) 
{  // 若所有TextField中数据符合要求(是float, 在取值范围内), 
       // 得出结果显示在响应的文本框中; 同时另两个按钮可用.
      
float F[] = new float[3];
     float sum=0;
     int i;
    
     if(e.getSource()==cmdSum){  // Sum
        
    for ( sum=i=0; i<3; i++)
    {
        if ( IsFloat( txtF[i].getText() ) )
     { 
F[i] = (float) Float.parseFloat(txtF[i].getText());

if ( ! Okfloat(F[i]) )
{
Error(i);
break;
}//if
else
{
sum = sum + F[i];
}                                            
     }//if
    else
    {
Error(i);
break;
    }
    }// for
   
    if(i == 3)  // 正常退出     
{ // 总分
txtF[3].setEnabled(true);
txtF[3].setText((""+sum) );
txtF[3].setEnabled(false);
// Button 
cmdAve.setEnabled(true);
 cmdOp.setEnabled(true);
 }
}// Sum if(e.getSource()==cmdAve){  // Ave
float ave= (float)Double.parseDouble(txtF[3].getText());
         txtF[4].setEnabled(true);
         txtF[4].setText("" + ave/3 );  // ??  如何做到只保留一位小数
         // txtF[4].setText("" + (float(int(ave/3*10))/10.0) );  // ?? 错在哪里??
         txtF[4].setEnabled(false);
        } // Ave
if(e.getSource()==cmdOp){  // 评定 
// ......
    }
} private boolean IsFloat(String str)   
{
int flag_Dec = 0;

    if(str.length()==0)
    {
     return false;
    }     for(int ilen=0; ilen< (str.length()); ilen++)
    {
    if(str.charAt(ilen) == '.')
    {
       flag_Dec++;

       if(flag_Dec > 1)  
           {
           return false;  // 只能有一个小数点
            }
        else
            {
           continue;
            }
    }//if    
    
    if( str.charAt(ilen) <'0' || str.charAt(ilen)> '9')
    {
       return false;
    }   
 }//for
   
   return true;
 }//IsFloat
 
private boolean Okfloat(float a)
{
if (a>=0 && a<=100)
{
return true;
}
else
{
return false;
}
}//Okfloat   private void Error(int i){    
     txtF[i].setText("");
    txtF[i].requestFocus();
}         
        
    public void addComponent(Component c, int row, int col, 
      int nrow, int ncol)
    {
    gridBagConstraints.gridx = col;
    gridBagConstraints.gridy = row;
    
    gridBagConstraints.gridwidth = ncol;
    gridBagConstraints.gridheight = nrow;
    
    gridBagLayout.setConstraints(c, gridBagConstraints);
    add(c);
    }
    
    public static void main(String[] args)
    {
    Mygridbag mygb = new Mygridbag("学生成绩录入");
    mygb.setSize(400, 220);
    mygb.setResizable(false); 
    mygb.show();
    }
}