Java布局管理器的相关问题

   在Java中,容器ScrollPane的默认布局管理器是BorderLayout

但是可以改变ScrollPane的布局管理器吗?
我的一个程序如下:

 import java.awt.Component;
import java.awt.Container;
import java.awt.Window;
import java.awt.ScrollPane;
import java.awt.TextComponent;
import java.awt.TextField;
import java.awt.Button;
import java.awt.LayoutManager;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
public class ScrollPaneTest 
{
    public static void main(String[] args) 
    {
        Frame f = new Frame("测试窗口");
        ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
        sp.setLayout(new FlowLayout());
        sp.add(new Button("单击我"));
        sp.add(new TextField(20));
        f.add(sp,BorderLayout.NORTH);
        f.setBounds(30,30,250,120);
        f.pack();
        f.setVisible(true);
    }
}
        可以编译通过,但是在运行过程中发生了异常,异常如下:
        ![图片说明](https://img-ask.csdn.net/upload/201605/26/1464250178_201633.png)

        请问这是不是说明,ScrollPane的布局管理器只能使用BorderLayout管理器,而不能使用其他的布局管理器呢?希望得到解惑。感谢!

自己通过查看源码知道了原因,如下图源码所示:
图片说明

完全可以的,把setlayout()传递你想要设置的布局类型即可