Как сделать так, чтобы компоненты выравнивались по вершине в JPanel с BoxLayout?

Я разрабатываю игру под названием GalaxyWar и пытаюсь составить меню выбора карты. Я обнаружил проблему, когда я использую BoxLayout с BoxLayout.Y_AXIS на JPanel с setAlignmentX(CENTER_ALIGNMENT)субкомпоненты (JPanel's) с заданным размером занимают всю высоту панели (все вместе) вместо назначенной высоты!

Вот мой код:

scrollPane = new JScrollPane();
    scrollPane.setBounds(160, 11, 452, 307);
    add(scrollPane);

    mapContainer = new JPanel();
    mapContainer.setAlignmentX(CENTER_ALIGNMENT);
    mapContainer.setAlignmentY(JPanel.TOP_ALIGNMENT);
    mapContainer.setLayout(new BoxLayout(mapContainer, BoxLayout.Y_AXIS));
    scrollPane.setViewportView(mapContainer);

    JPanel demoPanel = new JPanel();
    demoPanel.setLayout(null);
    demoPanel.setBackground(Color.YELLOW);
    demoPanel.setSize(50, 100);
    mapContainer.add(demoPanel);

Я долго исследовал это, но пока не смог найти никаких решений.

1 ответ

Решение

Попробуйте проверить

setPreferredSize() 
setMaximumSize()
setMinimumSize()

установите все 3 на одно и то же значение.

Если это все еще не работает, вы можете попытаться поместить панель, размер которой вы пытаетесь установить на фиксированный, внутри другой панели.

Другие вопросы по тегам