Java Swing - кнопка не меняет размер ширины

У меня есть JPanel, использующий FlowLayout, и Box с компонентами, расположенными вертикально. Что я хочу, так это установить тот же размер ширины других компонентов для кнопки «Удалить столбец». Я пытался изменить размер с помощью линии

removeColumnButton.setPreferredSize(new Dimension(130, 25));

но я могу изменить только размер высоты, а не ширины.

Ниже скриншот панели и кода:

введите здесь описание изображения

    JPanel eastPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
    Box eastPanelBox = Box.createVerticalBox();
        addNewColumnButton = new JButton("Add New Column");
        addNewColumnButton.setAlignmentX(Box.CENTER_ALIGNMENT);
        eastPanelBox.add(addNewColumnButton);
        eastPanelBox.add(Box.createVerticalStrut(5));

        removeColumnButton = new JButton("Remove Column"); 
        removeColumnButton.setAlignmentX(Box.CENTER_ALIGNMENT);
        removeColumnButton.setPreferredSize(new Dimension(130, 25));
        eastPanelBox.add(removeColumnButton);
        eastPanelBox.add(Box.createVerticalStrut(5));

        columnField = new JTextField();
        columnField.setAlignmentX(Box.CENTER_ALIGNMENT);
        columnField.setPreferredSize(new Dimension(130, 25));
        eastPanelBox.add(columnField);
        eastPanelBox.add(Box.createVerticalStrut(5));

        columnListCB = new JComboBox(cBoxModel);
        columnListCB.setAlignmentX(Box.CENTER_ALIGNMENT);
        eastPanelBox.add(columnListCB); 
        eastPanelBox.add(Box.createVerticalStrut(5));

        calculateColumnButton = new JButton("Calculate Column");
        calculateColumnButton.setAlignmentX(Box.CENTER_ALIGNMENT);
        eastPanelBox.add(calculateColumnButton);
    eastPanel.add(eastPanelBox);

person Xerath    schedule 05.05.2014    source источник
comment
Используйте GridLayout для контейнера, содержащего столбец компонентов. Инициализируйте его с помощью new GridLayout(0, 1, 0, vGap), что означает 1 столбец, переменное количество строк. Параметр vGap должен быть целым числом, представляющим вертикальный зазор между компонентами.   -  person Hovercraft Full Of Eels    schedule 05.05.2014


Ответы (1)


Используйте GridLayout для контейнера, содержащего столбец компонентов. Инициализируйте его с помощью

int vGap = 5;
new GridLayout(0, 1, 0, vGap)

что означает 1 столбец, переменное количество строк. Параметр vGap должен быть целым числом, представляющим вертикальный зазор между компонентами.

person Hovercraft Full Of Eels    schedule 05.05.2014
comment
Спасибо за предложение! Я сделаю это через 30 м. Я сделал очень большой перерыв в программировании этих вещей, так что спасибо, что напомнили мне о GridLayout! - person Xerath; 05.05.2014