Swing中面板切换

Swing Cut Panel to anither Panel

  1. 使用remove()方法,在容器中重绘
    private class PanelAction implements ActionListener {  
        public void actionPerformed(ActionEvent e) {  
            String buttonName = e.getActionCommand().substring(0);  //得到相应事物名字
            /**
             * 核心处理
             * 通过实现事件监听,并创建原来JFrame的引用
             * 移除原来的板块
             * 增加新来的板块,用JLabel 承接
             */
            CutPanel cp = CutPanel.this; //捕捉园面板
            cp.panel.removeAll();
            cp.panel.updateUI();    //原来面板清理干净
            panel.setLayout(new BorderLayout());//由于清了所有,所以重新设置边界布局
//          cp.remove(panel);//清除默认面板
//          cp.repaint();//remove配套,重画框架
            cp.panel.validate();  
            //验证功能, 使用 validate 方法会使容器再次布置其子组件。已经显示容器后,
            //在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与 布局相关的信息),应该调用
//          System.out.println(buttonName.toString());
            if (buttonName.equals("欢迎首页")){
                cp.panel.add(buildImage(),BorderLayout.CENTER);
            }   
            else if(buttonName.equals("JavaSrc")){
                cp.panel.add(new JTreeDemo(),BorderLayout.CENTER);
            }
            else if(buttonName.equals("数据排序")){
                cp.panel.add(new DataSort(),BorderLayout.CENTER);
            }
            else if(buttonName.equals("二叉树")){
                cp.panel.add(new BTree(),BorderLayout.CENTER);
            }
            else if(buttonName.equals("离散lab6")||buttonName.equals("离散lab5")){
                cp.panel.add(new SetLab(),BorderLayout.CENTER);
            }
            else if(buttonName.equals("最短路径")){
                cp.panel.add(new DistanceDemo(),BorderLayout.CENTER);               
            }
            else {
                cp.panel.add(new NotFound404(),BorderLayout.CENTER);                
            }
            cp.panel.updateUI();//化好了,要更新一下.
        }
    }
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值