Каждый раз, когда вы добавляете новый компонент в Контейнер, вы должны вызывать revalidate и repaint:
for (int i = 0; i < n; i++) {
jPanel2.add(new JButton(Integer.toString(i)));
}
jPanel2.revalidate();
jPanel2.repaint();
Первый говорит менеджерам компоновки сделать свое дело, второй - чтобы менеджер рисования java перекрасил контейнер, чтобы перерисовать грязные биты.
Редактировать
Методы revalidate и repaint вышли из цикла согласно превосходной рекомендации mKorbel.