Почему BoxLayout не позволяет мне изменять ширину JButton, но позволяет мне изменить высота?

Я пытаюсь получить макет моего JDialog , чтобы он соответствовал определенному виду, который имеет программа, в которой я портирую на Java, раньше я использовал несколько LayoutManager с большим успехом, но по какой-то причине я вообще не могу заставить это работать. Моя цель состоит в том, чтобы правая (восточная) сторона JDialog содержала «Найти далее» и «Отменить» кнопку в порядке сверху вниз, а затем любое дополнительное пространство внизу, чтобы две кнопки всегда находились вверху JDialog , но по какой-то причине BoxLayout постоянно игнорирует любые попытки изменение (здесь я потерялся) ширины JButton . Код следует.

JButton findNext = new JButton("Find Next");
JButton cancel = new JButton("Cancel");
cancel.setPreferredSize(new Dimension((int)findNext.getPreferredSize().getWidth(),  
    (int)cancel.getPreferredSize().getHeight()));

JPanel example = new JPanel();  
example.setLayout(new BoxLayout(example, BoxLayout.Y_AXIS));  
example.add(findNext);
example.add(cancel);  
example.add(Box.createGlue());  

Что бы я ни пытался, cancel всегда сохраняет свой нормальный размер. Я пробовал setMinimumSize () и setMaximumSize () с теми же параметрами, что и setPreferredSize , но безуспешно. Я даже пробовал cancel.setPreferredSize (new Dimension (500, 500)); , и высота кнопок была единственной настройкой, она ВСЕ ЕЩЕ сохранила заданную ширину по умолчанию.

Чтобы прояснить любые вопросы, вот как это выглядит (теперь, когда я ' мы закончили), и вы увидите, что кнопки «Найти далее» и «Отмена» имеют разные размеры.

example image

18
задан Community 8 February 2017 в 14:30
поделиться