Макет страницы свойств в Java - PullRequest
0 голосов
/ 20 октября 2011

Существует ли простой способ размещения компонентов на панели аналогично странице свойств? Где каждое свойство или параметр имеет метку слева и компонент редактора справа от панели. В идеале метки должны быть выровнены по левому краю, а редакторы - по правому краю. Левая позиция редактора должна начинаться с наибольшей ширины метки плюс пробел. Все редакторы должны иметь одинаковую ширину.

В настоящее время я могу сделать это только с помощью дизайнера 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. Но это немного подпрыгивает.

1 Ответ

0 голосов
/ 20 октября 2011

Чем больше требований вы хотите установить для внешнего вида ваших компонентов, тем сложнее будет написать код, чтобы попасть туда.

Если GridLayout не ведет себя так, как нужновам нравится, тогда GridBagLayout будет.Однако я боюсь, что когда вы реализуете GridBagLayout, ваш код не будет выглядеть намного лучше, чем тот, что вы получили в качестве примера.

Я бы придерживался существующих макетов и игнорировал бы «уродливый» кодсозданный дизайнером Netbeans.Вы не должны возиться с этим в любом случае, так как вы делаете все графическое редактирование.

...