GroupLayout - простое позиционирование компонентов - PullRequest
0 голосов
/ 13 сентября 2018

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

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

Что у меня есть

enter image description here

Что мне нужно

enter image description here

Я думаю, что я должен использовать константы 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 Ответ

0 голосов
/ 13 сентября 2018

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

    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();  
...