import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;public class Test extends JFrame
{
        public static void main(String[] args)
        {
                JFrame t=new Test();
                t.setSize(200,300);
                t.setVisible(true);
        }
        
        public Test()
        {
                JPanel b=new JPanel();
                b.setBorder(BorderFactory.createRaisedBevelBorder());
                b.setLayout(new BorderLayout());
                JPanel p=new JPanel();
                p.setBorder(BorderFactory.createLoweredBevelBorder());
                p.add(new JButton("1"));
                p.add(new JButton("2"));
                getContentPane().add(b);
                b.add(p,BorderLayout.NORTH);
        } 
}

解决方案 »

  1.   

    p已经完全充满b的北面,但button1和2只是占据p的center部分!,因为默认的就是p.add(new JButton("1"));<===>p.add(new JButton("1"),BorderLayout.CENTER);
                    
                    
      

  2.   

    JPanel默认的LayoutManager是FlowLayout,
    你在创建JPanel的实例的时候,
    需要把它设置为BorderLayout,JPanel p = new JPanel(new BorderLayout());
      

  3.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;public class Test extends JFrame
    {
            public static void main(String[] args)
            {
                    JFrame t=new Test();
                    t.setSize(200,300);
                    t.setVisible(true);
            }
            
            public Test()
            {
                    JPanel b=new JPanel();
                    b.setBorder(BorderFactory.createRaisedBevelBorder());
                    b.setLayout(new BorderLayout()); //JPanel的默认布局管理器是FlowLayout
                    JPanel p=new JPanel();
                    p.setBorder(BorderFactory.createLoweredBevelBorder());
                    p.add(new JButton("1"));
                    p.add(new JButton("2"));
                    getContentPane().add(b);
                    b.add(p,BorderLayout.NORTH);
            } 
    }