Java的GUI界面,设计上不能只靠一种Layout来解决问题,而是要容器套容器,不同容器用不同的Layout,组合来发挥效力。1、你的需求中,主容器用BorderLayout(缺省就是了);
2、准备放按钮的地方,就是(BorderLayout.WEST),这里放子容器(如JPanel),选择FlowLayout或GridLayout;然后子容器中再放按钮;
3、准备放界面的地方,就中间(BorderLayout.CENTER),也可以放个子容器(便于后续你还需要其它布局)。

解决方案 »

  1.   

    用JTabbedPane(选项卡面板)试试
      

  2.   

    CardLayout 对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到 CardLayout 对象的组件为可见组件。 
    first(Container parent) 
              翻转到容器的第一张卡片。
    last(Container parent) 
              翻转到容器的最后一张卡片。
    next(Container parent) 
              翻转到指定容器的下一张卡片。
      

  3.   


    import java.awt.BorderLayout;
    import java.awt.Color;import javax.swing.JButton;
    import javax.swing.JPanel;public class SwingTest extends javax.swing.JFrame{ /**
     * 
     */
    private static final long serialVersionUID = 1L; public SwingTest(){
    //按钮
    JButton jb = new JButton();
                    //分配区域
    JPanel jp = new JPanel();
    jp.setSize(150, 500);
    jp.setBackground(Color.PINK);
    jp.add(jb);
                    //设置SwingTest
    add(BorderLayout.WEST, jp);
    setLayout(new BorderLayout());
    setBounds(0,0,800,500);
    setDefaultCloseOperation(3);
    setVisible(true);
    }

    public static void main(String args[]){
    new SwingTest();
    }
    }
      

  4.   


    可以准备若干个JPanel,里面放置各种不同面板内容,都加入到CENTER区域。然后根据按钮不同,选择显示其中某个JPanel而隐藏所有其它的JPanel。
      

  5.   

    可以用下面这个方法 把JPanel里面所有的component
    然后根据所按得按钮 来计算需要的component位置 和前后component的间隔
    可参考下面的代码
    private void animate() {
    Component[] comps = iconPanel.getComponents(); int startPos_x = X_MARGIN;
    for(int i = 0; i < startIndex; i++) {
    JButton btn = (JButton)comps[i];
    Dimension dim = btn.getPreferredSize(); startPos_x -= (dim.width + X_MARGIN);
    } for(int i = 0; i < comps.length; i++){
    JButton btn = (JButton)comps[i];
    Dimension dim = btn.getPreferredSize(); Rectangle rect = new Rectangle(startPos_x, Y_MARGIN,  dim.width, dim.height);
    btn.setBounds(rect);
    startPos_x += dim.width + X_MARGIN;
    }
    }
      

  6.   

    用了上面的方法为什么不奏效呢,求大神过来解答一下//主页面
    //packge GUI;
    import GUI.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    //import javax.security.auth.login.*;
    public class SystemManagerGUI extends JFrame{
    private JPanel panela,panelb;
    private BorderLayout layout1;
    private FlowLayout layout2;
    private CardLayout layout3;
    private Container con1;
    private JButton button1,button2;
    public SystemManagerGUI(){
    super("BMS-SystemManager");
    layout1=new BorderLayout();
    layout2=new FlowLayout(FlowLayout.RIGHT,100,100);
    panela=new JPanel();
    panelb=new JPanel();
    ButtonHandler handler=new ButtonHandler();

    button1=new JButton("add a book manager");
    button1.addActionListener(handler);
    button2=new JButton("add a reader");
    button2.addActionListener(handler);
    panela.setLayout(layout2);
    panela.add(button1);
    panela.add(button2);


    panelb.setLayout(layout3);
    panelb.add(new ADD_BM());
    setLayout(layout1);
    con1=getContentPane();
    con1.add(panela,BorderLayout.WEST);
    con1.add(panelb,BorderLayout.CENTER);
    setSize(900,500);
    setVisible(true);
    setResizable(false);
    }
    private class ButtonHandler implements ActionListener{
    public void actionPerformed(ActionEvent event){
    String string="";
    if(event.getSource()==button1){
    string="true";

    }
    else if(event.getSource()==button2){
    string="false";
    }
    JOptionPane.showMessageDialog(null,string);
    }
    }
    public static void main(String[] args){
    SystemManagerGUI sysmanager=new SystemManagerGUI();
    sysmanager.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    }//ADD_BM
    package GUI;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    //import javax.security.auth.login.*;
    public class ADD_BM extends JPanel{
    private JPanel panela,panelb,panelc,paneld;
    private FlowLayout layout1,layout2,layout3,layout4,layout5;
    private Container con1;
    private JTextField text1,text2;
    private JPasswordField text3;
    private JLabel label1,label2,label3;
    private JButton button1,button2;
    public ADD_BM(){
    //super("BMS-Login");

    panela=new JPanel();
    panelb=new JPanel();
    panelc=new JPanel();
    paneld=new JPanel();

    layout1=new FlowLayout(FlowLayout.CENTER,100,60);
    layout2=new FlowLayout(FlowLayout.CENTER,100,0);
    layout3=new FlowLayout(FlowLayout.CENTER,100,0);
    layout4=new FlowLayout(FlowLayout.CENTER,90,0);
    layout5=new FlowLayout(FlowLayout.CENTER,100,0);
    TextFieldHandler handler=new TextFieldHandler();

    Font font=new Font(("Dialog"),0,20);
    label1=new JLabel("user_id");
    label1.setFont(font);
    text1=new JTextField(35);
    text1.addActionListener(handler);
    panela.setLayout(layout2);
    panela.add(label1);
    panela.add(text1);

    label2=new JLabel("username");
    label2.setFont(font);
    text2=new JPasswordField(35);
    text2.addActionListener(handler);
    panelb.setLayout(layout3);
    panelb.add(label2);
    panelb.add(text2);

    label3=new JLabel("password");
    label3.setFont(font);
    text3=new JPasswordField(35);
    text3.addActionListener(handler);
    panelc.setLayout(layout4);
    panelc.add(label3);
    panelc.add(text3);

    button1=new JButton("OK");
    button2=new JButton("exit");
    paneld.setLayout(layout5);
    paneld.add(button1);
    paneld.add(button2);

    setLayout(layout1);
    add(panela);
    add(panelb);
    add(panelc);
    add(paneld);
    //panelw.setSize(900,500);
    setVisible(true);
    //panelw.setResizable(false);
    }
    private class TextFieldHandler implements ActionListener{
    public void actionPerformed(ActionEvent event){
    String string="";
    if(event.getSource()==text1){
    string=event.getActionCommand();

    }
    else if(event.getSource()==text2){
    string=event.getActionCommand();
    }
    else if(event.getSource()==text3){
    string=event.getActionCommand();
    new String(text3.getPassword());
    }
    JOptionPane.showMessageDialog(null,string);
    }
    }
    public static void main(String[] args){
    //ADD_BM addGUI=new ADD_BM();
    //addGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    }