Вы не упоминаете макет, который использует текущий контейнер, но, скорее всего, это GroupLayout, макет, связанный со сборщиком графического интерфейса пользователя NetBeans, который не учитывает ограничения / константы BorderLayout.Вам нужно переосмыслить компоновку всего вашего графического интерфейса, особенно если вы собираетесь смешивать компоновщики компоновщика графического интерфейса IDE с макетами с ручным кодированием.Эту смесь можно сделать, но она требует осторожности - создайте свой JPanels для создателя графического интерфейса, создайте свои собственные JPanels, созданные вручную, а затем объедините их в основные JPanel (ы), которые используют соответствующие макеты.все детали будут зависеть от того, что вы пытаетесь создать, чего мы не знаем в данный момент.
Возможно, это вас смущает:
JPanel pnl = new JPanel();
pnl.setLayout(new BorderLayout()); // (A)
// ....
add(pnl, BorderLayout.CENTER); // (B)
Линия (A)устанавливает макет для pnl равным BorderLayout
. Строка (B) добавляет pnl к позиции BorderLayout.CENTER * текущего контейнера , снова того, который, вероятно,не использует BorderLayout (предположение, поскольку вы никогда не показываете или не говорите нам).
Кроме того, вы вызываете pack()
после добавления всех компонентов в окно верхнего уровня и перед его отображением?Вам следует.
Также обратите внимание, что это просто не нужно, поскольку JPanel видим по умолчанию:
pnl.setVisible(true);