Как сделать аккуратный макет?
Мы понятия не имеем, что для вас значит "аккуратный"?
Обычно у вас есть пары метка / текстовое поле в одной строке, а затем, возможно, кнопка в отдельной строке.
Я бы посоветовал вам использовать GridBagLayout
, поскольку он позволяет вам иметь гибкие сетки строк и столбцов для ваших компонентов.
Базовый код может выглядеть примерно так:
setLayout( new GridBagLayout() );
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
add(lblISBN, gbc);
gbc.gridx = 1;
add(txtISBN, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
add(lblTitle);
gbc.gridx = 1;
add(txtTitle);
... // add other components here
gbc.gridx = 0;
gbc.gridy = ?;
gbc.gridwidth = 2;
gbc.anchor = ???
add(btnSubmit);
Прочтите раздел из учебника по Swing на Как использовать GridBagLayout для получения дополнительной информации и примеров, с чего можно начать.,