Существует ли простой способ размещения компонентов на панели аналогично странице свойств? Где каждое свойство или параметр имеет метку слева и компонент редактора справа от панели. В идеале метки должны быть выровнены по левому краю, а редакторы - по правому краю. Левая позиция редактора должна начинаться с наибольшей ширины метки плюс пробел. Все редакторы должны иметь одинаковую ширину.
В настоящее время я могу сделать это только с помощью дизайнера Netbeans, используя «Свободный дизайн», который соответствует макету группы в сгенерированном коде. Уже тогда я использую дизайнер, чтобы установить местоположение и размер. И, честно говоря, сгенерированный код чертовски ужасен.
Сгенерированный код
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(199, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(11, 11, 11)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(275, 275, 275))
);
Имейте в виду, я хочу сделать это в коде, а не в конструкторе Netbeans, и я также хочу добавить много компонентов.
Я не думаю, что Grid Layout с 2 столбцами и x строками разрезает его, как всегда, разделяется на 2 столбца в середине панели. Поэтому, когда все метки не слишком велики, между самим редактором и редактором появится огромный разрыв.
Любые советы, хитрости, взломы приветствуются. Я думаю о том, чтобы написать свой собственный менеджер раскладки, чтобы возможно сделать это.
Хотя было бы неплохо написать один и использовать его в конструкторе Netbeans. Но это немного подпрыгивает.