Java BoxLayout дает неверные результаты - PullRequest
0 голосов
/ 04 октября 2011

У меня есть два JPanel, которые я хочу расположить друг над другом, внутри большого JPanel. "panel_controls" переопределяет .getPreferredSize (). Код:

public final class GUIPanelMain extends JPanel {
    //...

    private JPanel panel_images;
    private JPanel panel_controls;

    //...

    private void addPanels() {
        new BoxLayout(this,BoxLayout.Y_AXIS); //Bleh!  Still is horizontal!
        this.add(panel_images);
        this.add(panel_controls);
    }

    //...
}

К сожалению, макет все равно настроен горизонтально. Только когда я изменяю размер JPanel, все компоненты располагаются в нужных местах (в данном случае по вертикали).

Я прочитал следующее в документации: «BoxLayout пытается сделать все компоненты в столбце такими же широкими, как самый широкий компонент. Если это не удается, он выравнивает их по горизонтали в соответствии с их X-выравниванием»

Каковы условия отказа? Как я могу заставить его быть вертикально выровненным?

Спасибо

1 Ответ

3 голосов
/ 04 октября 2011

try

this.setLayout( new BoxLayout(this, BoxLayout.Y_AXIS));

Вы в основном создаете новый экземпляр BoxLayout, который не используется и не имеет ссылок.

...