Java FlowLayout - маржа / заполнение конкретных элементов?
Я очень плохо знаком с Swing и пытаюсь создать графический интерфейс. Используя создатель графического интерфейса Netbeans, мне удалось создать то, что мне понравилось. Но мне жаль, что я использовал редактор для этого, поэтому сейчас я пытаюсь сделать тот же дизайн, используя код. Вот картина того, что я пытаюсь сделать:Прямо сейчас я просто концентрируюсь на создании раздела "Критерии" (да, я знаю, что это неправильно написано на картинке) Вот что у меня сейчас есть:Я выделил красным, где я хочу увеличить маржу:
- Между справа от текстовых полей и слева от надписей
- Между верхней частью панели Criteria и JFrame
- Между левой и правой сторонами панели и JFrame
Я пришел из веб-разработки, где я хочу сделать увеличение прибыли. Если это неправильная терминология, пожалуйста, сообщите мне. Вот код, который я сейчас использую:
public class Criteria extends JPanel {
JLabel JobLabel = new JLabel();
JLabel BoxLabel = new JLabel();
JLabel PartLabel = new JLabel();
JTextField JobInput = new JTextField();
JTextField BoxInput = new JTextField();
JTextField PartInput = new JTextField();
public Criteria() {
setLayout(new FlowLayout(FlowLayout.LEADING));
setBorder(BorderFactory.createTitledBorder("Criteria"));
JobLabel.setText("Job");
JobLabel.setLabelFor(JobInput);
BoxLabel.setText("Box");
BoxLabel.setLabelFor(BoxInput);
PartLabel.setText("Part");
PartLabel.setLabelFor(PartInput);
JobInput.setColumns(8);
BoxInput.setColumns(8);
PartInput.setColumns(8);
add(JobLabel);
add(JobInput);
add(BoxLabel);
add(BoxInput);
add(PartLabel);
add(PartInput);
}
}
Я не знаю, как бы добавить маржу к этим компонентам, поэтому помощь будет очень цениться. Если я не могу добиться этого эффекта с помощью FlowLayout, то, пожалуйста, скажите мне, что я должен использовать вместо этого.
2 ответа
Свинг имеет тенденцию называть поля или границы "пробелами". FlowLayout
Класс (наряду с несколькими другими классами макетов) позволяет вам устанавливать горизонтальные и вертикальные промежутки в его конструкторе, например так:
private static final int PADDING = 3; // for example
...
setLayout(new FlowLayout(FlowLayout.LEADING, PADDING, PADDING));
Однако это добавит отступ между метками и их текстовыми полями, но вы можете обернуть каждую пару в JPanel
(вероятно, с FlowLayout
). Я хотел бы сделать собственный класс компонента для этого.
Вы должны изучить использование EmptyBorder для "заполнения" ваших компонентов. Вы можете создавать составные границы или вкладывать JPanels, если вам нужно более одного типа границ вокруг JPanel или другого компонента. Для промежутков между компонентами вы можете использовать настройки FlowLayout, как отмечено выше, или использовать распорку из класса Box.