BorderLayout也是一种 东、西、南、北、中的布局策略,每加入一个组件都应该指明把这个组件加在哪个区域中。窗口变化时,东、西宽不变,南、北高不变。如下所示:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class BorderWindow extends JFrame {
   public BorderWindow() {
Container contentPane = getContentPane();//获得容器,容器默认布局为BorderLayout
contentPane.add(new JButton("Button 1 (NORTH)"),BorderLayout.NORTH);
contentPane.add(new JButton("2 (CENTER)"),BorderLayout.CENTER);
      contentPane.add(new JButton("Button 3 (WEST)"),BorderLayout.WEST);
      contentPane.add(new JButton("Long-Named Button 4 (SOUTH)"),BorderLayout.SOUTH);
      contentPane.add(new JButton("Button 5 (EAST)"),BorderLayout.EAST); addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); }
});
   }   public static void main(String args[]) {
BorderWindow window = new BorderWindow();
window.inAnApplet = false;
window.setTitle("BorderLayout");
window.pack();
window.setVisible(true);
   }
}

解决方案 »

  1.   

    想要布局完美,就用GridBagLayout,虽然难了点.示例如下:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class GridBagWindow extends JFrame {
    boolean inAnApplet = true;
    final boolean shouldFill = true;
    final boolean shouldWeightX = true;public GridBagWindow() {
    JButton button;
    Container contentPane = getContentPane();
    GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints c = new GridBagConstraints();
    contentPane.setLayout(gridbag);
    if (shouldFill) {
    //natural height, maximum width
    c.fill = GridBagConstraints.HORIZONTAL; 
    }button = new JButton("Button 1");
    if (shouldWeightX) {
    c.weightx = 0.5;
    }
    c.gridx = 0;
    c.gridy = 0;
    gridbag.setConstraints(button, c);
    contentPane.add(button);button = new JButton("2");
    c.gridx = 1;
    c.gridy = 0;
    gridbag.setConstraints(button, c);
    contentPane.add(button);button = new JButton("Button 3");
    c.gridx = 2;
    c.gridy = 0;
    gridbag.setConstraints(button, c);
    contentPane.add(button);button = new JButton("Long-Named Button 4");
    c.ipady = 40; //make this component tall
    c.weightx = 0.0;
    c.gridwidth = 3;
    c.gridx = 0;
    c.gridy = 1;
    gridbag.setConstraints(button, c);
    contentPane.add(button);button = new JButton("Button 5");
    c.ipady = 0; //reset to default
    c.weighty = 1.0; //request any extra vertical space
    c.anchor = GridBagConstraints.SOUTH; //bottom of space
    c.insets = new Insets(10,0,0,0); //top padding
    c.gridx = 1; //aligned with button 2
    c.gridwidth = 2; //2 columns wide
    c.gridy = 2; //third row
    gridbag.setConstraints(button, c);
    contentPane.add(button);addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    if (inAnApplet) {
    dispose();
    } else {
    System.exit(0);
    }
    }
    });
    }public static void main(String args[]) {
    GridBagWindow window = new GridBagWindow();
    window.inAnApplet = false;window.setTitle("GridBagLayout");
    window.pack();
    window.setVisible(true);
    }
    }
      

  2.   

    是啊那个楼上的同志从哪COPY那堆代码没有用啊.
    楼主能看看你的程序么?
      

  3.   

    所有画图的坐标都是相对于某个component的左上角而言的,
    所以要在(0,0)上画出来,你的组件的位置一定要放好~~如果嫌 BorderLayout 的布局不能由自己控制,可以不设任何布局(Container.setLayout(null)),直接调用组件的方法来定位(Component.setBounds(x, y, width, height)).
      

  4.   

    要想管理好布局,还是用GridBagLayout吧,我觉得用java来作GUI,太困难了,要是你想要好看的话,最好还是一切都自己来写,这样就最好了,我就是这么干得.
      

  5.   

    to zhengoodman(你们真是来上自习的吗?) 
    我是没有别的意思的,我觉得你应该在回答问题时应该看清我要问的。
    如果你真觉得伤自尊了,我这里诚恳的向你表示歉意
      

  6.   

    to  zhengoodman(你们真是来上自习的吗?) :
    你只说对了一半:
    其实如果你在APPLET上设置布局后,加PANEL就会盖住那部分