Я пытаюсь правильно установить размеры моих JButtons в JPanel с BoxLayout, но поведение выходит за рамки странного. Он будет принимать высоту из JButton.setPreferredSize, но полностью игнорирует ширину. Это также работает только тогда, когда все кнопки установлены на одинаковую высоту. Как только один из них станет меньше, он вернет их все к некоторому случайному минимальному размеру (который даже не одинаков для всех кнопок)
Мой код такой:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 500);
JPanel rightPanel = new JPanel();
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.PAGE_AXIS));
JButton bBookmarks = new JButton("Bookmarks");
bBookmarks.setPreferredSize(new Dimension(200, 100));
//more buttons with same size
leftPanel.add(bBookmarks);
//more buttons
JSplitPane mainPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
mainPanel.setDividerLocation(200);
frame.add(mainPanel);
frame.setResizable(false);
frame.setVisible(true);
Это создает этот образ.

Средняя кнопка всегда шире, чем остальные. Использование frame.pack () ничего не делает, кроме изменения размера фрейма, потому что правая панель пуста.
Что я делаю не так?
Редактировать: Должно выглядеть так:
