awt?哎呀,你是想用java来做界面吗?像VB,VC,Delphi那样吗?
我搞这么久了,还没有搞过这样的java呢汗!
java在这方面没有任何优势!java的优势在于web应用。
你可以写一个jsp页面,写一个jdbc数据库连接,再写一个JavaBean。就可以了。
说实话,一百个java程序员有99个都不用java来做界面。
用java来做那些什么button,什么布局等,麻烦死了。如果你做作业的话,用vb,vc,c++builder,或delphi做好了。
如果你想学java的话,要同时学Html,jsp.

解决方案 »

  1.   

    谁说的,用JBuilder业做界面很快的,也有现成的控件可用,与VB,delphi差不多
      

  2.   

    呵呵 小日本很喜欢用APPLET
      

  3.   

    GridBagLayout?这个太麻烦了,偶用过两次就不用它了
    问题1:Label[] lbl=new Label[5];
    问题2:建议不要用GridBagLayout
    问题3:txtF1.addFocusListener(new java.awt.event.FocusAdapter() {
              public void focusLost(FocusEvent e) {
                .....
              }
           });
    问题4:txtF4.setText("1233");
    问题5:txtF1.setText("0");
           txtF1.requestFocus();
      

  4.   

    偶就是用java做界面的
    看来偶是那100个中的那一个了?
      

  5.   

    to :lmcctvjava(无心) ( ) 胖子明,你到哪里搞到的消息阿?
      

  6.   

    看来是偶见得少了。JBuilder做界面还不慢,Eclipse就真的不知怎么做了。一个一个去写太累了。
      

  7.   

    还三个错, 帮忙改一下好吗?  多谢了.import java.awt.*;
    import java.awt.event.*;public class Mygridbag extends Frame
    {
    boolean bF[] = {false, false, false}; 
     
    Button cmdSum, cmdAve, cmdOp;
    // 问题1:  如何设置控件数组,  Java中有类似与VB的控件数组?
    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();
        
    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); 

     
         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);
                                 
    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(false);
    cmdAve.setEnabled(false);
     cmdOp.setEnabled(false);       for(int i = 0; i<3; i++)
           {// 当TextField 完成输入失去焦点时,  对应的Boolean = ture.  
            // 当所有的TextField都为ture时,  Button  "总分计算" 可用. 
           txtF[i].addFocusListener(new java.awt.event.FocusAdapter() {
              public void focusLost(FocusEvent e) {
                btxtF[i] = true;
                TRUE();
              }
           });
           }//for
     
           cmdSum.addActionListener( new ActionListener()  //  添加实现在(一个括号里)一块
        {  
         float F[] = new float[3];
         float sum=0;
        
         public void actionPerformed(ActionEvent e) 
    {  // 若所有TextField中数据符合要求(是float, 在取值范围内), 
       // 得出结果显示在响应的文本框中; 同时另两个按钮可用.
       for (int i=0; i<3; i++)
       {
           if ( IsFloat( txtF[i].getText() ) )
       { 
    F[i] = (float) Float.parseFloat( txtF[i].gettext() );
    if ( ! Okfloat(F[i]) )
    {
    txtF[i].setText("0");
            txtF[i].requestFocus();
            bF[i] = false;
            cmdSum.setEnabled(false);
    return;
    }
    else
    {
    sum = sum + F[i];
    }                                             
        }
        else
        {
         txtF[i].setText("0");
            txtF[i].requestFocus();
            bF[i] = false;
            cmdSum.setEnabled(false);
    return;
        }
        // 总分
        txtF[3].setEnabled(true);
        txtF[3].setText((""+sum) );
        txtF[3].setEnabled(false);
        // Button 
        cmdAve.setEnabled(true);
         cmdOp.setEnabled(true);
       }
    }

    private boolean IsFloat(String str)   
    {
    int flag_Dec = 0;

        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 TRUE() {   
        for(int i =1; i<4; i++)
        {
         if( !bF[i] )
         {
         return;
         }
        }
         cmdSum.setEnabled(true);
         return;    
        }     });  
        
        }// 构造
           
        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();
        }
    }
      

  8.   

    Eclipse要用好几个插件才能做桌面程序界面,页面慢,还是用jBuilder吧。
      

  9.   

    最主要的问题是如何 (循环的) 设置监听器, 如何实现监听器功能.
    每段小程序都完成了, 但我不知道如何把这一块块的东西拼起来.
    大家也知道, 程序是以成败论英雄的, 我忙了一下午, 真的希望还是没有结果.
    所以拜托哪位大侠能帮小弟一把, 先谢了.我的设计思想是:
    (语, 数, 外 三个基本输入)TextField 都有一个对应的boolean值已判断是否已有输入(有效性判断在合计时进行). boolean bF[] = {false, false, false}; 
     
    Button cmdSum, cmdAve, cmdOp;
    Label[] lbl=new Label[5];  
    TextField[] txtF = new TextField[5];
    TextField txtFF; // 评定
    GridBagLayout gridBagLayout;
    GridBagConstraints gridBagConstraints;Button 总分(后称 B总) B平 B评定, T总, T平, T评定 可见不可选
    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);
         }
    txtFF = new TextField("", 25);

         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);    
         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(false);
    cmdAve.setEnabled(false);
     cmdOp.setEnabled(false);T(语, 数, 外) 设定失去焦点事件
       txtF[i].addFocusListener(new java.awt.event.FocusAdapter() {
              public void focusLost(FocusEvent e) {
                bF[i] = true;  // 对应boolean
                TRUE();
        }
        );
    三值都键入了吗?  
       private void TRUE() {   
        for(int i =1; i<3; i++)
        {
         if( !bF[i] )
         {
         return;
         }
        }
         cmdSum.setEnabled(true);
         return;    
        }cmdSum 设定click 事件
    判断输入框中值是否为float数
    private boolean IsFloat(String str)   
    {
    int flag_Dec = 0;

        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
    Y: 继续
    N: 不符合的T清0, 获得焦点, 相应b=false, B总不可用
    txtF[i].setText("0");
    txtF[i].requestFocus();
    bF[i] = false;
    cmdSum.setEnabled(false); 通过 F[i] = (float) Float.parseFloat( txtF[i].gettext() ); 将String -> float判断是否在取值范围内?
     private boolean Okfloat(float a)
     {
      if (a>=0 && a<=100)
      {
      return true;
      }
      else
      {
      return false;
      }
     }//Okfloat
    Y: 继续
    N: 不符合的T清0, 获得焦点, 相应b=false, B总不可用求三门总分
    txtF[3].setEnabled(true);
    txtF[3].setText((""+sum) );
    txtF[3].setEnabled(false);
    // Button 最大程度上防止误操作
    cmdAve.setEnabled(true);
    cmdOp.setEnabled(true);       cmdSum.addActionListener( new ActionListener()  //  添加实现在(一个括号里)一块
        {  
         float F[] = new float[3];
         float sum=0;
        
         public void actionPerformed(ActionEvent e) 
    {  // 若所有TextField中数据符合要求(是float, 在取值范围内), 
       // 得出结果显示在响应的文本框中; 同时另两个按钮可用.
       for (int i=0; i<3; i++)
       {
           if ( IsFloat( txtF[i].getText() ) )
       { 
    F[i] = (float) Float.parseFloat( txtF[i].gettext() );
    if ( ! Okfloat(F[i]) )
    {
    txtF[i].setText("0");
            txtF[i].requestFocus();
            bF[i] = false;
            cmdSum.setEnabled(false);
    return;
    }
    else
    {
    sum = sum + F[i];
    }                                             
        }
        else
        {
         txtF[i].setText("0");
            txtF[i].requestFocus();
            bF[i] = false;
            cmdSum.setEnabled(false);
    return;
        }     // 求总分
        txtF[3].setEnabled(true);
        txtF[3].setText((""+sum) );
        txtF[3].setEnabled(false);
        // Button 
        cmdAve.setEnabled(true);
         cmdOp.setEnabled(true);
       }
    }