Изучите использование MigLayout .Использование Swing невероятно удобно.
int buttonWidth = 100;
int buttonHeight = 50;
button.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
this.setLayout(new MigLayout("insets 0"));
this.add(button, "pos 50%-" + buttonWidth/2 + " 100%-" + buttonHeight);
Возможно, есть более простой способ с менеджером компоновки ядра или даже более простой способ с MigLayout, но я бы сначала подошел к нему.*
Другой альтернативой будет использование нулевого макета и setBounds
всякий раз, когда изменяется размер родительской панели.Большинство программистов на Swing не советуют использовать пустой макет, в этом случае вы можете посмотреть на BoxLayout
.Это зависит только от вас, но я считаю MigLayout
необходимым.