我是一名初学Java的学生,我编程时遇到了一个问题自己解决不了,只好求助大家,请大家指点:
作业的要求是对两个按钮实现委托类监听,使得最终的效果是:
1.如果是男生,必须由三个兴趣爱好才会被录取,
2.如果是女生,有两个或两个以上的兴趣爱好就会被录取,
下面是我的程序import java.awt.*;
import java.awt.event.*;
 class MyFrame extends Frame implements ActionListener
{
   Label l1,l2,l3,l4,l5;
   TextField txt1,txt2;
   CheckboxGroup gp=new CheckboxGroup();
   Checkbox b1,b2,b3,b4,b5;
   Button bt1,bt2;
   Panel p1=new Panel(); 
   Panel p2=new Panel(); 
   Panel p3=new Panel(); 
   Panel p4=new Panel(); 
   Panel p5=new Panel(); 
   Panel p6=new Panel(); 
 public MyFrame()
   {
    super("JAVA程序学习");
    setBackground(Color.lightGray);
    setLayout(new GridLayout(6,1));
    setVisible(true);
    pack();    l1=new Label("学生录取情况查询",Label.CENTER);
    l2=new Label("请输入你的名字:");
    l3=new Label("选择性别:");
    l4=new Label("选择你的兴趣爱好:");
    l5=new Label("输出查询结果");    txt1=new TextField(8);
    txt2=new TextField(16);    b1=new Checkbox("男",gp,true);
    b2=new Checkbox("女",gp,false); 
    b3=new Checkbox("篮球"); 
    b4=new Checkbox("登山"); 
    b5=new Checkbox("音乐"); 
    bt1=new  Button("提交");
    bt2=new  Button("重置");
    bt1.addActionListener();
    bt2.addActionListener();
    p1.add(l1); 
    p2.add(l2);p2.add(txt1); 
    p3.add(l3);p3.add(b1);p3.add(b2);
    p4.add(l4);p4.add(b3);p4.add(b4);p4.add(b5);
    p5.add(bt1); p5.add(bt2);
    p6.add(l5);p6.add(txt2);    setSize(400,400);
    add(p1); add(p2); add(p3); add(p4); add(p5);add(p6);
  
    void actionPerformed(ActionEvent e)  { 
    if(e.getSource()==bt1)
      {
        int num=0;
        if(b3.getState()) num++;
        if(b4.getState()) num++;
        if(b5.getState()) num++;
        if((b1.getState()&&num==3)||(b2.getState()&&num>=2)) txt2.setText("你被录取!");
        else txt2.setText("继续努力!");
      }
    else
      {
        txt1.setText("");
        txt2.setText("");
        b1.setState(true);
        b3.setState(false);
        b4.setState(false);
        b5.setState(false);
      }
  }
   
  
    this.addWindowListener   (  new WindowAdapter(){
      public void windowClosing(WindowEvent e){
       dispose();
       System.exit(0);
      }
    }                     )  ;
   }
}
public class TestMyFrame {
public static void main(String[] args){
     MyFrame w=new MyFrame(); 
      }
}

解决方案 »

  1.   

    package test;import java.awt.*;
    import java.awt.event.*;class MyFrame extends Frame implements ActionListener {
    private static final long serialVersionUID = 1L; Label l1, l2, l3, l4, l5; TextField txt1, txt2; CheckboxGroup gp = new CheckboxGroup(); Checkbox b1, b2, b3, b4, b5; Button bt1, bt2; Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); Panel p4 = new Panel(); Panel p5 = new Panel(); Panel p6 = new Panel(); public MyFrame() {
    super("JAVA程序学习");
    setBackground(Color.lightGray);
    setLayout(new GridLayout(6, 1)); l1 = new Label("学生录取情况查询", Label.CENTER);
    l2 = new Label("请输入你的名字:");
    l3 = new Label("选择性别:");
    l4 = new Label("选择你的兴趣爱好:");
    l5 = new Label("输出查询结果"); txt1 = new TextField(8);
    txt2 = new TextField(16); b1 = new Checkbox("男", gp, true);
    b2 = new Checkbox("女", gp, false);
    b3 = new Checkbox("篮球");
    b4 = new Checkbox("登山");
    b5 = new Checkbox("音乐");
    bt1 = new Button("提交");
    bt2 = new Button("重置");
    bt1.addActionListener(this);
    bt2.addActionListener(this);
    p1.add(l1);
    p2.add(l2);
    p2.add(txt1);
    p3.add(l3);
    p3.add(b1);
    p3.add(b2);
    p4.add(l4);
    p4.add(b3);
    p4.add(b4);
    p4.add(b5);
    p5.add(bt1);
    p5.add(bt2);
    p6.add(l5);
    p6.add(txt2); setSize(400, 400);
    add(p1);
    add(p2);
    add(p3);
    add(p4);
    add(p5);
    add(p6);
    pack();
    setVisible(true);
    } public void actionPerformed(ActionEvent e) {
    if (e.getSource() == bt1) {
    int num = 0;
    if (b3.getState())
    num++;
    if (b4.getState())
    num++;
    if (b5.getState())
    num++;
    if ((b1.getState() && num == 3) || (b2.getState() && num >= 2))
    txt2.setText("你被录取!");
    else
    txt2.setText("继续努力!");
    } else {
    txt1.setText("");
    txt2.setText("");
    b1.setState(true);
    b3.setState(false);
    b4.setState(false);
    b5.setState(false);
    } this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
    }
    }); } public static void main(String[] args) {
    new MyFrame();
    }
    }兄弟~~在你的基础上略加改动。你已经很接近正确的真相了,呵呵。加油。希望对你有所帮助。
      

  2.   

    你原有代码,只是添加了监听对象,红色标识。
    使用方法时,注意参数。
    另外还是使用eclipse作为编辑环境,有错误提示,用其他编辑器也行。import java.awt.*; 
    import java.awt.event.*; 
    class MyFrame extends Frame implements ActionListener 

      Label l1,l2,l3,l4,l5; 
      TextField txt1,txt2; 
      CheckboxGroup gp=new CheckboxGroup(); 
      Checkbox b1,b2,b3,b4,b5; 
      Button bt1,bt2; 
      Panel p1=new Panel(); 
      Panel p2=new Panel(); 
      Panel p3=new Panel(); 
      Panel p4=new Panel(); 
      Panel p5=new Panel(); 
      Panel p6=new Panel(); 
    public MyFrame() 
      { 
        super("JAVA程序学习"); 
        setBackground(Color.lightGray); 
        setLayout(new GridLayout(6,1)); 
        setVisible(true); 
        pack();     l1=new Label("学生录取情况查询",Label.CENTER); 
        l2=new Label("请输入你的名字:"); 
        l3=new Label("选择性别:"); 
        l4=new Label("选择你的兴趣爱好:"); 
        l5=new Label("输出查询结果");     txt1=new TextField(8); 
        txt2=new TextField(16);     b1=new Checkbox("男",gp,true); 
        b2=new Checkbox("女",gp,false); 
        b3=new Checkbox("篮球"); 
        b4=new Checkbox("登山"); 
        b5=new Checkbox("音乐"); 
        bt1=new  Button("提交"); 
        bt2=new  Button("重置"); 
        bt1.addActionListener(this); 
        bt2.addActionListener(this); 
        p1.add(l1); 
        p2.add(l2);p2.add(txt1); 
        p3.add(l3);p3.add(b1);p3.add(b2); 
        p4.add(l4);p4.add(b3);p4.add(b4);p4.add(b5); 
        p5.add(bt1); p5.add(bt2); 
        p6.add(l5);p6.add(txt2);     setSize(400,400); 
        add(p1); add(p2); add(p3); add(p4); add(p5);add(p6); 
      
        void actionPerformed(ActionEvent e)   { 
        if(e.getSource()==bt1) 
          { 
            int num=0; 
            if(b3.getState()) num++; 
            if(b4.getState()) num++; 
            if(b5.getState()) num++; 
            if((b1.getState()&&num==3)||(b2.getState()&&num>=2)) txt2.setText("你被录取!"); 
            else txt2.setText("继续努力!"); 
          } 
        else 
          { 
            txt1.setText(""); 
            txt2.setText(""); 
            b1.setState(true); 
            b3.setState(false); 
            b4.setState(false); 
            b5.setState(false); 
          } 
      } 
      
      
        this.addWindowListener  (  new WindowAdapter(){ 
          public void windowClosing(WindowEvent e){ 
          dispose(); 
          System.exit(0); 
          } 
        }                    )  ; 
      } 

    public class TestMyFrame { 
    public static void main(String[] args){ 
        MyFrame w=new MyFrame(); 
          } 
    }
      

  3.   

    帮我看看这个程序吧:
    class Game extends Frame imlement ActionListener
    {  Button bt;
       Label  lb;
       TextField  tf;
       Panel  pl;
       int x=int((Math.random()*9))+1;//这里我老是出错,但又找不出原因,帮我看看吧
       int y=int((Math.random()*9))+1;
       Game()
       {  bt=new Button("检查");
          lb=new Label("x*y=");
          tf=new TextField(10);
          pl=new Panel();
          
          pl.add(bt);pl.add(lb);pl.setLayout(new FlowLayout());
          
          bt.addActionListner(this);
        
          add(tf);add(pl);
        
          setBounds(100,100,150,150);
          setVisible(true);
          setLayout(new GridLayout());
       }
       public void actionPerformed(ActionEvent e)
       {  if(e.getSource()==tf)
          {  if(tf.getText()==lb.getText())
             {  lb.setText("对");
             }
             else
             {  lb.setText("错");
             }
          }
       }
    }
    public class Experiment_9
    {  public static voic main(String args[])
       {  Game f=new Game()
       }
    }
      

  4.   

    兄弟,首先,这里面有很多的拼写错误,细心哦~~
    比如,第一句implements才对啊,中间的addActionListener,你丢掉了一个e,呵呵,自己再查查。
    至于  int x=int((Math.random()*9))+1;这个肯定不对啊。这一行你应该是要做强制转化的,强转的语法是:(type)value
    所以这里应该是int x = ((int) (Math.random() * 9)) + 1;
    或者int x = (int)(((Math.random() * 9)) + 1);从double类型转化成为int类型。具体是哪一个看你的需求了。顺便,actionPerformed里面,你给bt加的监听,那么e.getSource()肯定不是tf呵……