Поскольку у вас есть доминирующая функция в макете (изображение), вы, вероятно, захотите использовать BorderLayout в качестве основного макета.
frame.getContentPane().setLayout(new BorderLayout(4, 4));
затем добавьте изображение в BorderLayout.CENTER
Далее JLabel хочет перейти в BorderLayout.NORTH
Теперь, если вы сделаете это, он не пойдет далеко вправо, поэтому создайте JPanel для севера, добавьте JLabel на панель и поместите панель на север.
Теперь вам нужен макет для северной панели. BoxLayout будет работать
northPanel.add(Box.createHorizontalGlue());
northPanel.add(label);