java切换面板时出现新窗口

设置了简单的界面,希望点击菜单相应的登录、注册页面的时候切换面板。登录和注册时两个独立的面板,组件也是单独加上去。监视器监视到触发按钮之后,隐藏原来的面板,然后加上新的对应的面板。每次切换就会出现新窗口,怎么样才可以让他们在一个窗口内实现?
// 改代码为监视器代码

public void actionPerformed(ActionEvent e) {
        if(e.getSource() == view.inbutton){
            view = new MenuCD();
            view.setLogin();
            System.out.println("进入系统");
        }
        else if(e.getSource() == view.mlogin){         // mlogin为登录按钮
            view = new MenuCD();
            view.setLogin();
            System.out.println("进入登陆页面");
        }
        else if(e.getSource() == view.mregister){    // mregister为注册按钮
            view = new MenuCD();
            view.setRegister();
            System.out.println("进入注册页面");
        }

以下两个函数setLogin, setRegister就是创建相应的组件,将原来底层容器上的面板隐藏,然后将面板加到底层容器上

public void setLogin(){        // 登录面板
        jpanel.setVisible(false);
        regpanel.setVisible(false);
        //菜单
        menu = new JMenuBar();
        mlogin = new JMenuItem("  登录  ");
        mregister = new JMenuItem("  注册  ");
        // 创建监视器对象
        listener = new MenuListener();
        listener.setView(this);
        bulistener = new MyListener();
        bulistener.setView(this);

        mlogin.addActionListener(listener);
        mregister.addActionListener(listener);
        // 菜单
        menu.add(mlogin);
        mlogin.setFont(new Font("幼圆",Font.BOLD,20));
        menu.add(mregister);
        mregister.setFont(new Font("幼圆",Font.BOLD,20));
        menu.setBounds(200,5,180,50);
        // 登录组件
        logbutton.setFont(myfont);
        label1.setFont(myfont);
        label1.setBounds(80,100,80,50);
        label2.setFont(myfont);
        label2.setBounds(67,157,120,50);
        logAccount.setBounds(160,110,300,30);
        logPass.setBounds(160,170,300,30);
        logbutton.setBounds(245,245,100,30);
        logbutton.addActionListener(bulistener);   // 给登录按钮注册监视器
        mlogin.setForeground(Color.LIGHT_GRAY);
        // 在登录面板添加组件
        logpanel.add(menu);
        logpanel.add(label1);
        logpanel.add(logAccount);
        logpanel.add(label2);
        logpanel.add(logPass);
        logpanel.add(logbutton);

 // 将该面板加到底层容器上
        con.add(logpanel);

    }
    public void setRegister(){        // 注册面板
        logpanel.setVisible(false);
        jpanel.setVisible(false);
        Container con = ft.getContentPane();

        //菜单
        menu = new JMenuBar();
        mlogin = new JMenuItem("  登录  ");
        mregister = new JMenuItem("  注册  ");
        // 创建监视器对象
        listener = new MenuListener();
        listener.setView(this);
        bulistener = new MyListener();
        bulistener.setView(this);

        mlogin.addActionListener(listener);
        mregister.addActionListener(listener);

        // 菜单
        menu.add(mlogin);
        mlogin.setFont(new Font("幼圆",Font.BOLD,20));
        menu.add(mregister);
        mregister.setFont(new Font("幼圆",Font.BOLD,20));
//        ft.setJMenuBar(menu);
        menu.setBounds(200,0,180,50);
        
        // 设置组件位置
        label1.setBounds(80,75,80,50);
        label1.setFont(myfont);
        label2.setBounds(67,133,120,50);
        label2.setFont(myfont);
        labeln.setBounds(105,197,120,50);
        labeln.setFont(myfont);
        labeli.setBounds(115,255,120,50);
        labeli.setFont(myfont);
        reAccount.setBounds(160,85,300,30);
        rePass.setBounds(160,145,300,30);
        renname.setBounds(160,205,300,30);
        reID.setBounds(160,265,300,30);
        regbutton.setBounds(245,310,100,30);
        mregister.setForeground(Color.LIGHT_GRAY);
        regbutton.addActionListener(bulistener);   // 给注册按钮注册监视器

        // 在注册面板添加组件
        regpanel.add(menu);
        regpanel.add(label1);
        regpanel.add(reAccount);
        regpanel.add(label2);
        regpanel.add(rePass);
        regpanel.add(labeln);
        regpanel.add(renname);
        regpanel.add(labeli);
        regpanel.add(reID);
        regpanel.add(regbutton);

        // 将该面板加到底层容器上
        con.add(regpanel);
    }