У вас есть 2 варианта.
Вы можете изменить макет вашего фрейма:
JFrame frame;
frame.setLayout(new FlowLayout());
Теперь, если вы добавите несколько боксов, оно появится на frame.
Другой вариант - делать то, что вы сказали, что пытались. (Добавление панели в кадр)
JPanel pane = new JPanel();
frame.add(pane);
(add the boxes to 'pane')
Кроме того, вы должны быть осторожны с размером вашего Box
. Вероятно, вы захотите позвонить setPreferredSize()
где-нибудь в создании Box
. Это скажет Java, какой размер сделать, когда он добавлен в макет.
Вы также должны взглянуть на учебные пособия по макету Java . Там много замечательной информации.
И еще одна вещь. Причина, по которой в кадре отображалась только одна ячейка, была связана с тем, что менеджер раскладки JFrame BorderLayout
. И когда вы вызываете add
на компонент с BorderLayout, компонент автоматически добавляется в центр компонента. Последующие вызовы add
перезапишут центральный компонент, оставив только один компонент в середине.