JAVA Swing 折叠菜单

首先再构造函数里添加一些控件代码

//Left面板折叠式菜单设置,三面板网格式布局
        pNorth=new JPanel();
        pNorth.setLayout(new GridLayout(8,1));
        pSouth=new JPanel();
        subMenuContainer=new JPanel();

        subMenuContainer.setLayout(new GridLayout(4,1));

        item1=new JButton("首页");              //设置按钮
        item2=new JButton("病人信息管理");       
        item3=new JButton("就医档案管理");
        item4=new JButton("医生信息管理");
        item5=new JButton("科室信息管理");
        item6=new JButton("价格管理");
        item7=new JButton("收费管理");
        item8=new JButton("系统设置");

        item1.setPreferredSize(new Dimension(150, 47));   //优先设置按钮大小
        item2.setPreferredSize(new Dimension(150, 47));
        item3.setPreferredSize(new Dimension(150, 47));
        item4.setPreferredSize(new Dimension(150, 47));
        item5.setPreferredSize(new Dimension(150, 47));
        item6.setPreferredSize(new Dimension(150, 47));
        item7.setPreferredSize(new Dimension(150, 47));
        item7.setPreferredSize(new Dimension(150, 47));
        item8.setPreferredSize(new Dimension(150, 47));

        item1.setContentAreaFilled(false);item2.setContentAreaFilled(false);   //设置为透明
        item3.setContentAreaFilled(false);item4.setContentAreaFilled(false);
        item5.setContentAreaFilled(false);item6.setContentAreaFilled(false);
        item7.setContentAreaFilled(false);item8.setContentAreaFilled(false);

        pNorth.add(item1); pNorth.add(item2); pNorth.add(item3);   //添加按钮
        pNorth.add(item4); pNorth.add(item5); pNorth.add(item6); 
        pNorth.add(item7);pNorth.add(item8);

        btn=new JButton[2];        //设置子功能按钮
        btn[0]=new JButton("信息录入"); 
        btn[1]=new JButton("其他操作");
        for(int i=0;i<btn.length;i++){
            btn[i].setBackground(Color.WHITE);   //设置按钮颜色
            btn[i].setPreferredSize(new Dimension(150,30));//设置大小
            btn[i].addMouseListener(this);
        }    

        ctn=new JButton[3];        
        ctn[0]=new JButton("档案录入"); 
        ctn[1]=new JButton("处方单"); 
        ctn[2]=new JButton("其他操作"); 
        for(int i=0;i<ctn.length;i++){
            ctn[i].setBackground(Color.WHITE);
            ctn[i].setPreferredSize(new Dimension(150,30));
            ctn[i].addMouseListener(this);
        }

        dtn=new JButton[2];        
        dtn[0]=new JButton("信息录入"); 
        dtn[1]=new JButton("其他操作"); 
        for(int i=0;i<dtn.length;i++){
            dtn[i].setBackground(Color.WHITE);
            dtn[i].setPreferredSize(new Dimension(150,30));
            dtn[i].addMouseListener(this);
        }      

        etn=new JButton[1];        
        etn[0]=new JButton("综合操作"); 
        for(int i=0;i<etn.length;i++){
            etn[i].setBackground(Color.WHITE);
            etn[i].setPreferredSize(new Dimension(150,30));
            etn[i].addMouseListener(this);
        }   

        ftn=new JButton[1];        
        ftn[0]=new JButton("综合操作"); 
        for(int i=0;i<ftn.length;i++){
            ftn[i].setBackground(Color.WHITE);
            ftn[i].setPreferredSize(new Dimension(150,30));
            ftn[i].addMouseListener(this);
        }
        gtn=new JButton[2];        
        gtn[0]=new JButton("结账页面"); 
        gtn[1]=new JButton("综合操作"); 
        for(int i=0;i<gtn.length;i++){
            gtn[i].setBackground(Color.WHITE);
            gtn[i].setPreferredSize(new Dimension(150,30));
            gtn[i].addMouseListener(this);
        }
        htn=new JButton[1];        
        htn[0]=new JButton("修改密码"); 

        for(int i=0;i<htn.length;i++){
            htn[i].setBackground(Color.WHITE);
            htn[i].setPreferredSize(new Dimension(150,30));
            htn[i].addMouseListener(this);
        }


        left.add(pNorth,"North");   //按钮添加到left面板中
        left.add(subMenuContainer,"Center");
        left.add(pSouth,"South");


        //监听器添加
        item1.addMouseListener(this);
        item2.addMouseListener(this);
        item3.addMouseListener(this);
        item4.addMouseListener(this);
        item5.addMouseListener(this);
        item6.addMouseListener(this);
        item7.addMouseListener(this);
        item8.addMouseListener(this);


然后添加功能,为按钮添加事件,如下


        public void mouseClicked(MouseEvent e) {
        if(e.getSource()==item1){
            this.add(right);
            HomePage s=new HomePage();   //调用主页的类。
            right.add(s.homePage, "homePage");
            layout.next(right);
        }
         //设置折叠按钮功能,先把南面板清空,让后在给各面板设置布局方式,添加按钮也添加子功能按钮,清楚别的子功能按钮 
        if(e.getSource()==item2){
            pSouth.removeAll();   
            pNorth.setLayout(new GridLayout(2,1)); 
            pSouth.setLayout(new GridLayout(6,1));
            pNorth.add(item1);
            pNorth.add(item2);
            pSouth.add(item3);
            pSouth.add(item4);
            pSouth.add(item5);
            pSouth.add(item6);
            pSouth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.add(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }

        if(e.getSource()==item3){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(3,1)); 
            pSouth.setLayout(new GridLayout(5,1));
            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pSouth.add(item4);
            pSouth.add(item5);
            pSouth.add(item6);
            pSouth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.add(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }

        if(e.getSource()==item4){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(4,1)); 
            pSouth.setLayout(new GridLayout(4,1));
            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pNorth.add(item4);
            pSouth.add(item5);
            pSouth.add(item6);
            pSouth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.add(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }

        if(e.getSource()==item5){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(5,1)); 
            pSouth.setLayout(new GridLayout(3,1));
            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pNorth.add(item4);
            pNorth.add(item5);
            pSouth.add(item6);
            pSouth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.add(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }

        if(e.getSource()==item6){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(6,1)); 
            pSouth.setLayout(new GridLayout(2,1));
            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pNorth.add(item4);
            pNorth.add(item5);
            pNorth.add(item6);
            pSouth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.add(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }
        if(e.getSource()==item7){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(7,1)); 
            pSouth.setLayout(new GridLayout(1,1)); 
            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pNorth.add(item4);
            pNorth.add(item5);
            pNorth.add(item6);
            pNorth.add(item7);
            pSouth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.add(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.remove(htn[i]);
            validate();
            getContentPane().repaint();
        }
        if(e.getSource()==item8){
            pSouth.removeAll();
            pNorth.setLayout(new GridLayout(8,1)); 

            pNorth.add(item1);
            pNorth.add(item2);
            pNorth.add(item3);
            pNorth.add(item4);
            pNorth.add(item5);
            pNorth.add(item6);
            pNorth.add(item7);
            pNorth.add(item8);
            for(int i=0;i<btn.length;i++)
                subMenuContainer.remove(btn[i]);
            for(int i=0;i<ctn.length;i++)
                subMenuContainer.remove(ctn[i]);
            for(int i=0;i<dtn.length;i++)
                subMenuContainer.remove(dtn[i]);
            for(int i=0;i<etn.length;i++)
                subMenuContainer.remove(etn[i]);
            for(int i=0;i<ftn.length;i++)
                subMenuContainer.remove(ftn[i]);
            for(int i=0;i<gtn.length;i++)
                subMenuContainer.remove(gtn[i]);
            for(int i=0;i<htn.length;i++)
                subMenuContainer.add(htn[i]);
            validate();
            getContentPane().repaint();
        }

这些是我做课程设计时候的代码,里面的内容没改,,看看就很容易改的,希望能帮到大家!有不足之处望多多指教!!!
这里写图片描述

这里写图片描述这里写图片描述
这里写图片描述
这里写图片描述


这就是效果图,就是根据你选择按下的按钮会弹出,其他的按钮都收缩。选择的那个按钮就只有一个按钮显示!

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值