У меня есть код как этот:
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 (с некоторым размером) между моими элементами. Но я не думаю, что это - изящный способ получить желаемый эффект. Может кто-то, помогает мне с этим?
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);
будет одним из способов сделать это.
Если вы точно намерены использовать BoxLayout
для компоновки панели, то вам следует взглянуть на Как использовать BoxLayout Sun Learning Trail, в частности на Использование невидимых компонентов в качестве наполнителя. Вкратце, с помощью BoxLayout
вы можете создавать специальные невидимые компоненты, которые действуют как прокладки между другими вашими компонентами:
container.add(firstComponent);
container.add(Box.createRigidArea(new Dimension(5,0)));
container.add(secondComponent);
Вы можете рассмотреть GridLayout вместо BoxLayout, у него есть атрибуты Hgap и Vgap, которые позволяют задать постоянное расстояние между компонентами.
GridLayout layout = new GridLayout(2, 1);
layout.setVgap(10);
myPanel.setLayout(layout);
myPanel.add(button);
myPanel.add(label);
Используйте класс Box
как невидимый элемент-заполнитель. Вот как Sun рекомендует это делать.