По какой-то причине мои JPanels, которые я добавляю к содержимому JPanel, растягиваются вертикально, а не являются предпочтительным размером. Вот код:Как сохранить контент в растяжении в JPanel при использовании BorderLayout?
public static JPanel content;
public APP()
{
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(new MenuBar());
content = new JPanel(new GridLayout(0, 8, 2, 2));
add(new JScrollPane(content, 22, 32), BorderLayout.CENTER);
pack();
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
addJPanel();
addJPanel();
}
public void addJPanel()
{
JPanel box = new JPanel();
box.setPreferredSize(new Dimension(100, 100));
box.setBackground(Color.BLACK);
content.add(box);
content.validate();
}
Как я могу сохранить их в определенном размере при их добавлении? Или, по крайней мере, не позволяйте им растягиваться полностью через панель содержимого. Я хочу, чтобы они были одинакового размера, без изменения их размеров, поскольку добавлено больше панелей.
* ПРИМЕЧАНИЕ: addJPanel() позволяет динамически добавлять новые панели в панель содержимого с помощью кнопки или действия. Это всего лишь тестовый метод, реальное добавление панелей происходит из действия, вызываемого кнопкой меню.
Не используйте BorderLayout, если вы не хотите, чтобы он растягивался. Может быть, переключитесь на 'GirdBagLayout', который центрирует ваш компонент и сохранит их предпочтительное значение. –
@GuillaumePolet Ну, BorderLayout используется в JFrame, JPanel - это тот, который использует GridLayout, и вещи добавляются к нему, поэтому BorderLayout не должен влиять на Это. И это не так. Если я удалю строки BorderLayout, ничего не изменится. –
@Guillaume Polet не ошибается, этот контейнер отлично уложен, JFrame с (в области CENTER) JScrollPane с/вложенным JPanel, лучшим из вариантов .... – mKorbel