(Это не мой настоящий код, а просто самый простой код, который я смог собрать, который воспроизводит проблему)
Код: Выделить всё
package com.example;
import javax.swing.Box;
import javax.swing.BoxLayout;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class JTableExample {
JFrame f;
JTable table;
JTableExample()
{
f = new JFrame();
f.setTitle("JTable Example");
String[][] data = {
{ "Kundan Kumar Jha", "4031", "CSE" },
{ "Anand Jha", "6014", "IT" }
};
String[] columnNames = { "Name", "Roll Number", "Department" };
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));
for (int i = 0 ; i < 3; i++){
JPanel tablePanel = new JPanel(new BorderLayout());
table = new JTable(data, columnNames);
tablePanel.add(table.getTableHeader(), BorderLayout.PAGE_START);
tablePanel.add(table, BorderLayout.CENTER);
outerPanel.add(tablePanel);
outerPanel.add(Box.createRigidArea(new Dimension(0,20)));
}
JScrollPane sp = new JScrollPane(outerPanel);
f.add(sp);
f.setSize(500, 400);
f.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample();
}
}

Я хочу, чтобы все таблицы располагались в верхней части окна, а все пустое пространство располагалось внизу, вот так:
(Я украсил этот снимок экрана, добавив 20 JPanel после таблиц)

Я пытался использовать GridBagLayout, но в итоге получилось следующее:
(Все просто плавает в середине окна)

Может ли кто-нибудь помочь мне понять, кто я? делаете что-то не так?
Если это имеет значение, в моем реальном коде есть произвольное количество таблиц, оно не фиксировано.
Подробнее здесь: https://stackoverflow.com/questions/788 ... p-of-panel