我的主界面是一个Frame,大致可分为左右两部分,
左边是操作栏,五个Button,一列;
右边是一个JPanel,长方形,空的;我的想法是点击左侧一个按钮,右边panel显示相应内容,切换按钮时显示对应内容;我的实现方式是,button添加监听后跳转,将主界面的参数mainFrame,mainContainer,mainPanel传送到跳转界面,界面接收传递过来的参数,在mainPanel上添加布局,能正常显示;我的问题是,当我点击一个按钮实现功能后,当我点击另一个按钮的时候,上一界面的右侧布局还存在我分析原因,是因为主界面的右侧是空的,而这些按钮的监听都是在主界面上实现的,所以我即使
mainPanel.removeAll(),也没有用,因为我传递到跳转界面本身就是空的;所以求助各位,怎样解决这个问题呢?或者哪种方式能实现我的想法呢swingbutton

解决方案 »

  1.   

    //Main.java
    mainFrameContentPane = mainFrame.getContentPane();
    mainFrameContentPane.setLayout(null); mainFrameContentPane.add(mainJPanel);
    mainJPanel.setBounds(125, 70, 665, 420);
    //---- scheduleButton ----
    scheduleButton.setText("\u65e5\u7a0b\u5b89\u6392");
    scheduleButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    mainJPanel.removeAll();
    new ScheduleManageFrame(mainFrame,mainFrameContentPane,mainJPanel,usernameString);
    }
    });
    mainFrameContentPane.add(scheduleButton);
    scheduleButton.setBounds(30, 130, 90, 25);//ScheduleManageFrame.java
    public ScheduleManageFrame(JFrame mainFrame,Container mainFrameContentPane,JPanel mainJPanel,String username) {
    mainJPanel.removeAll();
    mainFrame1=mainFrame;
    mainFrameContentPane1=mainFrameContentPane;
    mainJPanel1=mainJPanel;
    usernameString=username;
    initComponents();
    }
    mainFrameContentPane1.setLayout(null);
    mainJPanel1.setLayout(null);
    mainJPanel1.add(addNewLessonsButton);//只列举了一个组件
    addNewLessonsButton.setBounds(430, 25, 60, 23);
    mainJPanel1.setBounds(125, 70, 665, 420);
      

  2.   

    左边是操作栏,五个Button,一列;
    右边是一个JPanel,长方形,空的;
    我的想法是点击左侧一个按钮,右边panel显示相应内容,切换按钮时显示对应内容;程序加载就生成5个button,和5个jpanel.
    一个button对应一个jpanel.
    每个button的点击里都有控制他对应的jpanel.visible=true;其他的jpanel.visible=flase;
      

  3.   

    我开始的实现是这样的,比如,我点击课程管理按钮,然后进入new LessonManage();这样怎么用cardLayout的show方法呢?,难道要把每个panel布局的内容都在主界面实现吗,这不是我的初衷,那样代码显得沉重~~
      

  4.   

    CardLayout layout = new CardLayout();
    JPanel right = new JPanel(layout);
    final String lmID = "LessonManager";
    right.add(lessonmanager, lmID);layout.show(right, lmID);