第一个问题我不知道。
pack()方法会通知容器重新安排所有本容器内的组件,如果你使用了某个组件的setPerfectSize()方法,那么用pack()方法通知容器,容器就会重新安排组件的位置。