У меня есть очень простой пользовательский компонент.
Пользовательский компонент отвечает за определение его:
- минимальный размер
- предпочтительный размер
- максимальный размер
Вы реализуете только предпочтительные и максимальные размеры.
Но все равно не имеет смысла, почему компонент не не в центре и составляет половину максимальной ширины.
BoxLayout пытается соблюдать минимальный и максимальный размеры компонента.
Минимальный размер по умолчанию - (0, 0), который, кажется, вызывает путаницу для BoxLayout. Я не уверен почему. Я бы сказал, что это ошибка / особенность BoxLayout.
Вам необходимо реализовать метод getMinimumSize()
. Кажется, это работает:
@Override
public Dimension getMinimumSize() {
return new Dimension(2, 2);
}
Примечание. Я попытался (1, 1), но это не сработало. Опять же, не знаю, почему.
Я хотел бы предложить, что для вашего случая вы можете использовать:
@Override
public Dimension getMinimumSize() {
return getPreferredSize();
}
как для минимального, так и для максимального методов, так как кажется, что вы хотите размер должен быть постоянным.