这个一般的书上太多了吧,

解决方案 »

  1.   

    那去看,很全的import java.awt.*;
       
    public class LayoutApp extends Frame
    {
    MenuBar menuBar;
    Panel panels[];
    Panel currentPanel;
    static int border=0;
    static int card=1;
    static int flow=2;
    static int grid=3;
    static int gridBag=4;
    Menu cardMenu;
    public static void main(String[] args)
    {
    LayoutApp app=new LayoutApp();
    }
    public LayoutApp()
    {
    setup();
    resize(400,400);
    show();
    }
    void setup()
    {
    setupMenuBar();
    setupPanels();
    }
    void setupMenuBar()
    {
    menuBar=new MenuBar();
    Menu fileMenu=new Menu("File");
    fileMenu.add(new MenuItem("Exit"));
    menuBar.add(fileMenu);

    Menu panelMenu=new Menu("Panel");
    panelMenu.add(new MenuItem("BorderLayout"));
    panelMenu.add(new MenuItem("CardLayout"));
    panelMenu.add(new MenuItem("FlowLayout"));
    panelMenu.add(new MenuItem("GridLayout"));
    panelMenu.add(new MenuItem("GridBagLayout"));
    menuBar.add(panelMenu);

    cardMenu=new Menu("Card");
    cardMenu.add(new MenuItem("First"));
    cardMenu.add(new MenuItem("Last"));
    cardMenu.add(new MenuItem("Next"));
    cardMenu.add(new MenuItem("Previous"));

    setMenuBar(menuBar);
    }
    void setupPanels()
    {
    panels=new Panel[5]; for (int i=0;i<5;++i) panels[i]=new Panel();
    panels[border].setLayout(new BorderLayout());
    panels[card].setLayout(new CardLayout());
    panels[flow].setLayout(new FlowLayout());
    panels[grid].setLayout(new GridLayout(3,3));

    GridBagLayout gridBagLayout=new GridBagLayout();
    panels[gridBag].setLayout(gridBagLayout); //Set BorderLayout:
    panels[border].add("North",new Button("North"));
    panels[border].add("South",new Button("South"));
    panels[border].add("East",new Button("East"));
    panels[border].add("West",new Button("West"));
    panels[border].add("Center",new Button("Center"));

    String cardButtons[]={"First","Second","Third","Fourth","Last"};
    String flowButtons[]={"One","Two","Three","Four","Five"};
    String gridButtons[]={"(0,0)","(1,0)","(2,0)","(0,1)","(1,1)","(2,1)","(3,1)","(2,1)","(3,1)"};

    for (int i=0;i<cardButtons.length;++i)
    panels[card].add(cardButtons[i],new Button(cardButtons[i]));
    for (int i=0;i<flowButtons.length;++i)
    panels[flow].add(new Button(flowButtons[i]));
    for (int i=0;i<gridButtons.length;++i)
    panels[grid].add(new Button(gridButtons[i]));
    Button gridBagButtons[]=new Button[9];
    for (int i=0;i<9;++i)
    gridBagButtons[i]=new Button("Button"+i);

    int gridx[]={0,1,2,0,2,0,1,1,8};
    int gridy[]={0,0,0,1,1,2,2,3,6};
    int gridwidth[]={1,1,1,2,1,1,1,2,3};
    int gridheight[]={1,1,1,1,2,2,1,1,1};

    GridBagConstraints gridBagConstraints[]=new GridBagConstraints[9];
    for (int i=0;i<9;++i)
    {
    gridBagConstraints[i]=new GridBagConstraints();
    gridBagConstraints[i].fill=GridBagConstraints.BOTH;
    gridBagConstraints[i].gridx=gridx[i];
    gridBagConstraints[i].gridy=gridy[i];
    // gridBagConstraints[i].gridwidth=gridwidth[i];
    // gridBagConstraints[i].gridheight=gridheight[i];
    gridBagLayout.setConstraints(gridBagButtons[i],gridBagConstraints[i]);
    panels[gridBag].add(gridBagButtons[i]);

    }
    // add("Center",panels[border]);
    add(panels[border]);
    currentPanel=panels[border];
    }

    public boolean handleEvent(Event e)
    {
    if (e.id==Event.WINDOW_DESTROY)
    {
    System.exit(0);
    return true;
    }
    else
    if (e.id==Event.ACTION_EVENT)
    {
    if (e.target instanceof MenuItem)
    {
    if ("Exit".equals(e.arg))
    {
    System.exit(0);
    return true;
    }
    if ("BorderLayout".equals(e.arg))
    {
    switchPanels(panels[border],"BorderLayout",false);
    return true;
    }
    if ("CardLayout".equals(e.arg))
    {
    switchPanels(panels[card],"CardLayout",true);
    return true;
    }
    if ("FlowLayout".equals(e.arg))
    {
    switchPanels(panels[flow],"FlowLayout",false);
    return true;
    }
    if ("GridLayout".equals(e.arg))
    {
    switchPanels(panels[grid],"GridLayout",false);
    return true;
    }
    if ("GridBagLayout".equals(e.arg))
    {
    switchPanels(panels[gridBag],"GridBagLayout",false);
    return true;
    }
    if ("First".equals(e.arg))
    {
    CardLayout currentLayout=(CardLayout)currentPanel.getLayout();
    currentLayout.first(currentPanel);
    return true;
    }
    if ("Next".equals(e.arg))
    {
    CardLayout currentLayout=(CardLayout)currentPanel.getLayout();
    currentLayout.next(currentPanel);
    return true;
    }
    if ("Last".equals(e.arg))
    {
    CardLayout currentLayout=(CardLayout)currentPanel.getLayout();
    currentLayout.last(currentPanel);
    return true;
    }
    if ("Previous".equals(e.arg))
    {
    CardLayout currentLayout=(CardLayout)currentPanel.getLayout();
    currentLayout.previous(currentPanel);
    return true;
    }
    }
    }
    return false;
    }
    void switchPanels(Panel newPanel,String newTitle,boolean setCardMenu)
    {
    remove(currentPanel);
    currentPanel=newPanel;
    add(currentPanel);
    setTitle(newTitle);
    if (setCardMenu) 
    menuBar.add(cardMenu);
    else
    menuBar.remove(cardMenu);
    show();
    }
    }