Вместо создания LineBorder
используйте CompoundBorder
:
button2.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.RED, 1),
BorderFactory.createEmptyBorder(
button1.getBorder().getBorderInsets(button1).top,
button1.getBorder().getBorderInsets(button1).left,
button1.getBorder().getBorderInsets(button1).bottom,
button1.getBorder().getBorderInsets(button1).right)));
Я взял BorderInsets
за button1
, чтобы они оба имели одинаковый размер.
Мой ответ основан на ответе @MadProgrammer для на этот вопрос

Кстати, не расширяйте JFrame
, вместо этого создайте его экземпляр, и если вам действительно нужно расширить компонент, будь то JPanel
: Расширяет JFrame по сравнению с его созданием внутри программы
Также не забудьте позвонить
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
На вашем JFrame
экземпляре, чтобы ваша программа закрывалась при закрытии.
А также вы пропустили размещение своей программы на EDT, подробнее об этом на этом ответе