Swing中面板切换

    xiaoxiao2025-01-20  1

    Swing Cut Panel to anither Panel

    使用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();//化好了,要更新一下. } }
    转载请注明原文地址: https://ju.6miu.com/read-1295670.html
    最新回复(0)