在jFrame中,当点击菜单中某一项时,jFrame中的jPanel为某一内容的panel,点击菜单另一项时,jFrame中的jPanel为另一panel,请问这个地方该怎么做?谢谢!

解决方案 »

  1.   

    在菜单项中设置相应的component为想设置的panel就可以了
    也可以先将原有的container中的component删除,再添加,注意最后调用JComponent的updateUI();
    一个例子,仅供参考:
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSplitPane;public class Test extends JFrame{
    public Test(){
    constructUI();
    }


    private void constructUI() {
    final JSplitPane splitPane = new JSplitPane();
    final JPanel pane1 = new JPanel();
    pane1.setBackground(Color.BLUE);
    final JPanel pane2 = new JPanel();
    pane2.setBackground(Color.GREEN);
    JButton btnTest = new JButton("Test");
    splitPane.setLeftComponent(btnTest);
    splitPane.setRightComponent(pane1);
    getContentPane().add(splitPane);

    btnTest.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
    if(splitPane.getRightComponent() == pane1){
    splitPane.setRightComponent(pane2);
    }
    else{
    splitPane.setRightComponent(pane1);
    }
    splitPane.updateUI();
    }});
    }

    public static void main(String[] args) {
    Test test = new Test();
    test.setSize(100,100);
    test.setVisible(true); }}
      

  2.   

    把你需要的两个不同的panel放在重复的位置。显示panel1的时候,panel1.setVisble(true)
    反之,panel2.setVisble(true)
    为了防止引起混乱最好写个专门的方法来设置显示那个panelpublic void setVisible(JPanel viaiblePanel){
       panel1.setVisible(false);
       panel2.setVisible(false);   panel1.setVisible(true);   // do others
    }