Проблема в том, что, когда я пытаюсь добавить эту границу, она полностью портит другую JPanel
border = BorderFactory.createLineBorder(Color.red);
Это создает границу с толщиной линии 1, я думаю.
border = BorderFactory.createEmptyBorder();
Это создает границу с толщиной линии 0.
Таким образом, изменение границы приводит к изменению размера кнопки, что может повлиять на макет.
Вместо этого вы должны использовать:
border = BorderFactory.createEmptyBorder(1, 1, 1, 1);
Это предотвратит изменение размера кнопки, поэтому не должно вызывать проблем с макетом. Однако эта граница также должна быть границей по умолчанию для кнопки.