Привет я использую a BoxLayout
сложить JPanel
s друг на друге (BoxLayout.Y_AXIS
), например, если мой родитель JPanel
имеет высоту 500 пикселей, и я добавляю две дочерних панели к ней обе из высоты 100 пикселей. BoxLayout
расширяет их так, чтобы вместе они заняли 500 пкс пространства. Кто-либо знает, как отключить эту опцию?
Используйте вместо него GridBagLayout . У вас гораздо больше контроля над своим пользовательским интерфейсом.
Но если вы все еще хотите использовать BoxLayout и не хотите, чтобы они растягивались, вы можете проверить, используя невидимые наполнители компонентов , такие как жесткие области, клей и наполнители.
BoxLayout - один из немногих менеджеров верстки, который уважает минимальный и максимальный размер компонента. Поэтому, если вы хотите предотвратить растяжение панели, вы можете использовать:
panel.setMaximumSize( panel.getPreferredSize() );
Ваши панели растягиваются, потому что BoxLayout не ограничивает каждую панель до желаемого размера. Вам необходимо найти раскладки, которые соответствуют предпочитаемому размеру компонента, как это делается в позициях BorderLayout's NORTH и SOUTH.
Попробуйте следующее:
Код:
JPanel panel1 = new JPanel(new BorderLayout());
panel1.add(component1, BorderLayout.NORTH);
JPanel panel2 = new JPanel(new BorderLayout());
panel2.add(component2, BorderLayout.NORTH);
JPanel boxPanel = new JPanel();
BoxLayout boxLayout = new BoxLayout(boxPanel, BoxLayout.Y_AXIS);
boxPanel.setLayout(boxLayout);
boxPanel.add(panel1);
boxPanel.add(panel2);
Хитрость в том, чтобы, как и в предыдущем ответе, использовать клей, наполнители и жесткие области в раскладке бокса. Однако, в отличие от этого ответчика, я бы рекомендовал придерживаться BoxLayout - с помощью Box можно добиться большей простоты в использовании, чем с помощью Grid Bag; при этом дополнительная мощность в типичном диалоговом окне не принесет вам много пользы.
В старой идиоме это были такие вещи, как Box.createHorizontalStrut(int x) и Box.createHorizontalGlue(); идея в том, что вы ставите стойку между первой и второй компонентами, а затем добавляете клей после второй. ("strut" = "жесткая область" в настоящее время).