if(e.getSource()==user_log) banks.next(p1);
if(e.getSource()==sys_manage) banks.next(p2);

改成if(e.getSource().equals(user_log)) banks.next(this);
if(e.getSource().equals(sys_manage)) banks.next(this);

解决方案 »

  1.   

    上面的方法只能顺序切换
    如果想任意切换,应该如此:
    1.
    setLayout(banks);
    banks.addLayoutComponent(p1,"p1");  //这里"p1","p2","p4"名字可以任意起,但不要重名
    banks.addLayoutComponent(p2,"p2");
    banks.addLayoutComponent(p4,"p4");
    add("管理",p1);
    add("登陆",p2);
    add("系统",p4);2.
    if(e.getSource().equals(user_log))  banks.show(this,"p2");
    if(e.getSource().equals(sys_manage))banks.show(this,"p4");注意"p2"和"p4"要与上面的定义一致

      

  2.   

    按钮好像都没加事件监听例如:
    user_log.addActionListener(this);
    sys_manage.addActionListener(this);

    creat_user.addActionListener(this);
             ......
      

  3.   

    paint函数应该怎么用啊我想在第二个panel中调用paint函数
      

  4.   

    每个容器都有自己的paint,你把要显示的东西放在相应容器的paint方法里面
      

  5.   

    比如:
    class p1Panel extends Panel{
             Label log ;
    //.....定义p1Panel里面的组件
      public p1Panel(){
             log=new Label("欢迎进入银行管理系统");
             //实例化组件
             setLayout(new GridLayout(2,2));
    p1.add(log);
    p1.add(new Label());
    p1.add(user_log);
    p1.add(sys_manage);
       }  //这里做p1Panel的初始化工作  public void paint(Graphics g){
             //在p1Panel中画图
      }
    }在Applet中
    Panel p1=new Panel();
    就应该改为:
    p1Panel p1=new p1Panel();其他几个panel也可以如法泡制,当然这个代码是个示例,具体的还要自己修改。
    总之你要各个panel都独立操作的话,最好将这几个panel都独立为一个类,这样就好处理了。