Отправляет email-рассылки с помощью сервиса Sendsay

Изучаем язык Java

  Все выпуски  

Изучаем язык Java


Java для чайников. Урок 42. Менеджеры расположения компонентов. Продолжение - 4

 Продолжаем изучать GroupLayout. В прошлый раз мы остановились вот на таком расположении. 

Как из него сделать, например, такое:

Очень просто.

Переносим кнопку пять в первый столбец:

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)

                .addComponent(btn5)            

                .addComponent(btn7)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn2)            

                .addComponent(btn8)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn3)

                .addComponent(btn6)

                .addComponent(btn9)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn4)

            )

        );

Строки оставляем без изменений.

Аналогично поставим кнопочку 6 в четверную колонку:

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)

                .addComponent(btn5)            

                .addComponent(btn7)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn2)            

                .addComponent(btn8)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn3)            

                .addComponent(btn9)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn4)

                .addComponent(btn6)

            )

        );

И что мы видим:

Что интересно, если в описании столбца мы поменяем местами кнопки, например, 4-ую и 6-у:

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn6)

                .addComponent(btn4)            

            )

То это ничего не изменит, так как вертикальный порядок кнопок задан их принадлежностью к строкам.

Рассмотри еще один пример:

import javax.swing.*;

import static javax.swing.GroupLayout.Alignment.*;

 

public class Demo2 extends JFrame {

    private final JLabel one;

    private final JLabel two;

    private final JLabel three;

    private final JLabel four;

    private final JLabel five;

    private final JLabel six;

   

    public Demo2() {

        JFrame frame = new JFrame();

        JPanel panel = new JPanel();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        GroupLayout layout = new GroupLayout(panel);

        panel.setLayout(layout);

 

        one = new JLabel("one");

        two = new JLabel("two");

        three = new JLabel("three");

        four = new JLabel("four ****");

        five = new JLabel("five****");

        six = new JLabel("six*************");

       

        layout.setHorizontalGroup(layout

            .createParallelGroup(GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addComponent(one, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                .addComponent(two, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                .addComponent(three, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

            .addGroup(layout.createSequentialGroup()

                .addComponent(four, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                .addComponent(five, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

            .addComponent(six, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

 

        layout.setVerticalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)

                .addComponent(one).addComponent(two).addComponent(three))

            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)

                .addComponent(four).addComponent(five))

            .addComponent(six));

           

        frame.add(panel);

        frame.pack();

        frame.setVisible(true);

    }

   

    public static void main(final String[] args) {

        Demo2 GUI = new Demo2();

    }

}

Эта программа верхнюю строку делает с тремя полями, нижнюю с двумя длиной в полтора поля первой строки и третья строка - все поле длиной шесть полей первой строки:

 

(С) Шуравин Александр

 

 


В избранное