Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Java для чайников. arrow Java для чайников. Урок 41. Менеджеры расположения компонентов. Продолжение - 3
05.04.2020 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
Java для чайников. Урок 41. Менеджеры расположения компонентов. Продолжение - 3 Печать E-mail
Автор megabax   
21.02.2020 г.
В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

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

Продолжим изучение лайоута GroupLayout. Предположим, у нас есть девять кнопок. Расположим их сначала просто горизонтально в ряд:

Программа будет выглядеть фот так:

import javax.swing.*;

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

 

public class Demo extends JFrame {

    public Demo() {

        

        GroupLayout layout = new GroupLayout(getContentPane());

        getContentPane().setLayout(layout);

        layout.setAutoCreateGaps(true);

        layout.setAutoCreateContainerGaps(true);

       

        JButton btn1 = new JButton("Кнопка 1");

        JButton btn2 = new JButton("Кнопка 2");

        JButton btn3 = new JButton("Кнопка 3");

        JButton btn4 = new JButton("Кнопка 4");

        JButton btn5 = new JButton("Кнопка 5");

        JButton btn6 = new JButton("Кнопка 6");

        JButton btn7 = new JButton("Кнопка 7");

        JButton btn8 = new JButton("Кнопка 8");

        JButton btn9 = new JButton("Кнопка 9");

 

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addComponent(btn1)

            .addComponent(btn2)

            .addComponent(btn3)

            .addComponent(btn4)

            .addComponent(btn5)

            .addComponent(btn6)

            .addComponent(btn7)

            .addComponent(btn8)

            .addComponent(btn9)

        );

        

        

        layout.setVerticalGroup(layout.createSequentialGroup()     

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn1)

                .addComponent(btn2)

                .addComponent(btn3)

                .addComponent(btn4)

                .addComponent(btn5)

                .addComponent(btn6)

                .addComponent(btn7)

                .addComponent(btn8)

                .addComponent(btn9)

                )

        );

        

        setTitle("Демо программа");

        pack();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }

 

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {

                try {

                    UIManager.setLookAndFeel(

                            "javax.swing.plaf.metal.MetalLookAndFeel");

                } catch (Exception ex) {

                    ex.printStackTrace();

                }

                new Demo().setVisible(true);

            }

        });

    }

}

Что мы сделали в данном примере? Просто затолкали их как есть в горизонтальную группу, а в вертикальную добавили их сгруппированными. 

Можно сделать наоборот, сгруппировать горизонтально, но как есть вставить вертикально:

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)

                .addComponent(btn2)

                .addComponent(btn3)

                .addComponent(btn4)

                .addComponent(btn5)

                .addComponent(btn6)

                .addComponent(btn7)

                .addComponent(btn8)

                .addComponent(btn9)

            )

        );

        

        

        layout.setVerticalGroup(layout.createSequentialGroup()     

            .addComponent(btn1)

            .addComponent(btn2)

            .addComponent(btn3)

            .addComponent(btn4)

            .addComponent(btn5)

            .addComponent(btn6)

            .addComponent(btn7)

            .addComponent(btn8)

            .addComponent(btn9)

        );

Тогда программа будет выглядеть так:

А теперь сделаем вот такую программу:

Для этого нужно по вертикали и по горизонтали сгруппировать кнопочки по три:

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)

                .addComponent(btn2)

                .addComponent(btn3)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn4)

                .addComponent(btn5)

                .addComponent(btn6)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn7)

                .addComponent(btn8)

                .addComponent(btn9)

            )

        );

        

        layout.setVerticalGroup(layout.createSequentialGroup()     

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn1)

                .addComponent(btn4)

                .addComponent(btn7)

            )

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn2)

                .addComponent(btn5)

                .addComponent(btn8)

            )

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn3)

                .addComponent(btn6)

                .addComponent(btn9)

            )

        );

Обратите внимание, что в горизонтальной группе мы кнопки группируем (1,2,3), (4,5,6), (7,8,9) - и это у нас столбцы. А в вертикальной группировке мы добавляем строчки, и они у нас уже будут (1,4,7), (2,5,8), (3,6,9).

Если мы хотим наоборот, то нужно сделать во так:

layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)

                .addComponent(btn4)

                .addComponent(btn7)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn2)

                .addComponent(btn5)

                .addComponent(btn8)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn3)

                .addComponent(btn6)

                .addComponent(btn9)

            )

        );

        

        layout.setVerticalGroup(layout.createSequentialGroup()     

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn1)

                .addComponent(btn2)

                .addComponent(btn3)

            )

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn4)

                .addComponent(btn5)

                .addComponent(btn6)

            )

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn7)

                .addComponent(btn8)

                .addComponent(btn9)

            )

        ); 

 И выглядеть это будет вот так:

А теперь попробуем убрать кнопку 4 из серединной строки и поместить в первую, вот так:

Как мы это сделаем? Во-первых, уберем из описания столбца (1,4,7) и поместим в новый, четвертый столбец:

        layout.setHorizontalGroup(layout.createSequentialGroup()

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn1)            

                        .addComponent(btn7)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn2)

                .addComponent(btn5)

                .addComponent(btn8)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn3)

                .addComponent(btn6)

                .addComponent(btn9)

            )

            .addGroup(layout.createParallelGroup(LEADING)

                .addComponent(btn4)

            )

        );

А во-вторых, уберем кнопку "4" из второй строки и поместим в первую:

        layout.setVerticalGroup(layout.createSequentialGroup()     

                  .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn1)

                .addComponent(btn2)

                .addComponent(btn3)

                .addComponent(btn4)

            )

            .addGroup(layout.createParallelGroup(BASELINE)             

                        .addComponent(btn5)

                .addComponent(btn6)

            )

            .addGroup(layout.createParallelGroup(BASELINE)

                .addComponent(btn7)

                .addComponent(btn8)

                .addComponent(btn9)

            )

        );  

Что еще можно сделать с данным лайоутом? Об этом вы узнаете в следуем уроке. 

 

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

 

 

 
Пред. »
 
© 2020 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги