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

У меня есть код как этот:

    JPanel myPanel = new JPanel();
    myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));

    JButton button = new JButton("My Button");
    JLabel label = new JLabel("My label!!!!!!!!!!!");

    myPanel.add(button);
    myPanel.add(label);

Таким образом я получаю элементы без расстояния между ними. Я имею в виду, "главные" элементы всегда касается "нижнего" элемента. Как я могу изменить его? Я хотел бы иметь некоторое разделение между своими элементами?

Я думаю о добавлении некоторого "промежуточного" JPanel (с некоторым размером) между моими элементами. Но я не думаю, что это - изящный способ получить желаемый эффект. Может кто-то, помогает мне с этим?

12
задан Taryn 25 June 2013 в 19:38
поделиться

4 ответа

    JPanel myPanel = new JPanel();
    myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));

    JButton button = new JButton("My Button");
    JLabel label = new JLabel("My label!!!!!!!!!!!");

    myPanel.add(button);
    myPanel.add(Box.createVerticalStrut(20));
    myPanel.add(label);

будет одним из способов сделать это.

16
ответ дан 2 December 2019 в 06:08
поделиться

Если вы точно намерены использовать BoxLayout для компоновки панели, то вам следует взглянуть на Как использовать BoxLayout Sun Learning Trail, в частности на Использование невидимых компонентов в качестве наполнителя. Вкратце, с помощью BoxLayout вы можете создавать специальные невидимые компоненты, которые действуют как прокладки между другими вашими компонентами:

container.add(firstComponent);
container.add(Box.createRigidArea(new Dimension(5,0)));
container.add(secondComponent);
5
ответ дан 2 December 2019 в 06:08
поделиться

Вы можете рассмотреть GridLayout вместо BoxLayout, у него есть атрибуты Hgap и Vgap, которые позволяют задать постоянное расстояние между компонентами.

GridLayout layout = new GridLayout(2, 1);
layout.setVgap(10);
myPanel.setLayout(layout);
myPanel.add(button);
myPanel.add(label);
3
ответ дан 2 December 2019 в 06:08
поделиться

Используйте класс Box как невидимый элемент-заполнитель. Вот как Sun рекомендует это делать.

Руководство по BoxLayout .

1
ответ дан 2 December 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: