Как выровнять пары JLabel-JTextField по вертикали - PullRequest
9 голосов
/ 15 мая 2011

Под парой JLabel-JTextField я подразумеваю компонент JLabel, за которым следует JTextField, например, «Параметр 1: -----», где «-----» обозначает пустой JTextField.

Проблема в том, что ширина JLabels варьируется из-за разной длины имен параметров, поэтому начало JTextFields не выравнивается по вертикали.

Есть ли способ выровнять JLabels по вертикали относительно ихправильно, чтобы последующие запуски JTextFields были выровнены?Спасибо.

Ответы [ 7 ]

6 голосов
/ 15 мая 2011

Вы не указали, какой макет вы используете, поэтому хорошим вариантом для реализации будет GridBagLayout . Демо на сайте Oracle отлично подходит для начала.

И короткий пример:

JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Label 1:"), c);
c.gridx = 1;
c.gridy = 0;
panel.add(new JTextField("TextField 1"), c);
c.gridx = 0;
c.gridy = 1;
panel.add(new JLabel("Label 2:"), c);
c.gridx = 1;
c.gridy = 1;
panel.add(new JTextField("TextField 2"), c);
6 голосов
/ 15 мая 2011

Есть ли способ выровнять JLabels по вертикали по правому краю, чтобы выровнять запуски последующих полей JTextFields?

1.6 +, GroupLayout.Например, из JavaDocs:

enter image description here

Используйте выравнивание меток, которое выталкивает текст в RHS.


См. Также этот ответ для MCVE.

image

3 голосов
/ 15 мая 2011

или

есть возможность выровнять только текст внутри JTextComponents с

JLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
2 голосов
/ 15 мая 2011

Это идеальный вариант использования для DesignGridLayout :

DesignGridLayout layout = new DesignGridLayout(contentPane);
layout.labelAlignment(LabelAlignment.RIGHT);
layout.row().grid(label1).add(field1);
layout.row().grid(label2).add(field2);
...
1 голос
/ 15 мая 2011

Хорошие решения для этого, которые я видел, включают использование GridBagLayout (как отмечено выше) или MiGLayout , хотя, поскольку последний не является частью стандартной Java, его необходимо загрузить и поместитьна пути к классам до использования.MiGLayout не так сложен в использовании.

1 голос
/ 15 мая 2011

Я бы предложил менеджер раскладки GridLayout .Он представляет собой простейшее решение для отображения попарной визуализации элементов управления надписью и надписью.Таким образом, вы просто определяете количество строк и столбцов во время создания экземпляра, и добавленные элементы управления будут обрабатываться менеджером.

0 голосов
/ 15 мая 2011

LayoutManager родительского компонента отвечает за позиционирование содержащихся элементов. Может быть, вам нужно установить XYLayout.

См. SetLayoutManager () для вашего родительского класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...