GroupLayout - простое позиционирование компонента

Я использую GridBagLayout но повернулся к GroupLayout относительно недавно. Ниже скриншот того, что у меня есть и что мне нужно. Тогда код.

Что мне нужно изменить?

Что я имею

введите описание изображения здесь

Что мне нужно

введите описание изображения здесь

Я думаю, что я должен использовать TRAILING а также LEADING константы, но графический интерфейс не отвечает. Может ли это быть причиной, по которой большинство ТАК советуют людям избегать GroupLayout? Я использую GridBagLayout до того, что является более сложным, и GroupLayout Код кажется намного проще. Вот почему я использую это. Ниже приведен код, который мне нужен, чтобы получить желаемый эффект?

public class GroupLayoutOne extends JFrame{

   JLabel lbText = new JLabel("Text one");
   JTextField txText = new JTextField();
   JLabel lbText2 = new JLabel("Text two");
   JTextField txText2 = new JTextField();
   JPanel pnCompo = new JPanel();

    public static void main(String[] args) {

        GroupLayoutOne glx = new GroupLayoutOne();
        glx.init();
        glx.setVisible(true);
        glx.setSize(new Dimension(400,200));
        glx.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

    void init(){
        GroupLayout gl = new GroupLayout(getContentPane());
        this.getContentPane().setLayout(gl);

        pnCompo.setPreferredSize(new Dimension(300,300));
        pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addGroup(gl.createParallelGroup()
                        .addComponent(lbText)
                        .addComponent(lbText2)
                        .addComponent(pnCompo)
                 )
                 .addGroup(gl.createParallelGroup()
                        .addComponent(txText)
                        .addComponent(txText2)

                )
        );
        gl.setVerticalGroup(gl.createSequentialGroup()
                 .addGroup(gl.createParallelGroup()
                        .addComponent(lbText)
                        .addComponent(txText)

                 )
                 .addGroup(gl.createParallelGroup()
                        .addComponent(lbText2)
                        .addComponent(txText2)

                )
                .addComponent(pnCompo)
        );
        pack();
    }
 }

1 ответ

Решение

Замените метод init следующим кодом: BTW: используйте NetBeans или Eclipse, чтобы нарисовать пользовательский интерфейс Swing. Это было бы намного проще, чем писать код самостоятельно.

    GroupLayout gl = new GroupLayout(getContentPane());
    this.getContentPane().setLayout(gl);

    pnCompo.setPreferredSize(new Dimension(300,300));
    pnCompo.setBorder(BorderFactory.createTitledBorder("More Components"));
    gl.setHorizontalGroup(gl.createSequentialGroup()
            .addGroup(gl.createParallelGroup()
                    .addGroup(gl.createSequentialGroup().addComponent(lbText)
                    .addComponent(txText))

             .addGroup(gl.createParallelGroup()
                     .addGroup(gl.createSequentialGroup().addComponent(lbText2)
                    .addComponent(txText2))

             .addComponent(pnCompo))
             )
    );
    gl.setVerticalGroup(gl.createSequentialGroup()
             .addGroup(gl.createParallelGroup()
                    .addComponent(lbText)
                    .addComponent(txText))
             .addGroup(gl.createParallelGroup().addComponent(lbText2)
                    .addComponent(txText2)
            )
            .addComponent(pnCompo)
    );
    pack();  
Другие вопросы по тегам