Я использую setVisible (false)
Попробуйте вместо setEnabled(false)
.Это не удалит визуальное представление кнопки, которая фиксирует макет, но сделает ее не фокусируемой и будет выглядеть по-другому.Это «путь наименьшего удивления» для типичного конечного пользователя.
Менеджер местоположений - GridBagLayout.
Кстати - если вы застряли на созданиикнопка невидима, GridLayout
позволит добиться эффекта сохранения позиций других кнопок.