Читаем Графические интерфейсы пользователя Java полностью

Используя отступы, вы можете точно контролировать расстояние между компонентами или от границы контейнера.

Метод setAutoCreateGaps устанавливает, должен ли автоматически создаваться промежуток между компонентами при последовательном размещении.

Метод setAutoCreateContainerGaps устанавливает, должен ли автоматически создаваться промежуток между контейнером и компонентами, которые касаются границы контейнера, при параллельном размещении.

Метод setHorizontalGroup создает горизонтальную группу компонентов, а метод setVerticalGroup создает вертикальную группу компонентов, при этом мы определяем, какая это будет группа – с последовательным размещением компонентов или параллельным размещением.

Для определения типа группы используются методы createSequentialGroup и createParallelGroup.

Метод addComponent добавляет компонент в группу, а метод addGroup добавляет группу.

В этом примере мы создаем горизонтальную группу с последовательным размещением, в которую добавляем кнопку и группу.

По горизонтальной оси кнопки 2 и 3 занимают одно и тоже место, поэтому эта группа будет параллельной.

И в нее мы добавляем кнопки 2 и 3.

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

Таким образом видно, что при работе с менеджером GroupLayout нужно сначала создать визуальный макет, а затем на его основе создавать группы.

BoxLayout и Box

Менеджер компоновки BoxLayout используется для размещения компонентов по вертикали или по горизонтали.




Менеджер компоновки BoxLayout создается с помощью конструктора, первым параметром которого указывается контейнер.

Второй параметр задает способ расположения компонентов в этом контейнере с помощью одной из констант X_AXIS – расположение слева направо, Y_AXIS – расположение сверху вниз, LINE_AXIS и PAGE_AXIS – расположение определяется контейнером.

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

При вертикальном расположении менеджер старается выровнять ширину компонентов по самому широкому компоненту.

Панель Box – это контейнер, который использует менеджер компоновки BoxLayout.



Вы можете легко создавать сложные компоновки компонентов, помещая их в несколько вложенных ящиков Box.

Панель Box создается с помощью статического метода createHorizontalBox для горизонтального размещения компонентов или статического метода createVerticalBox для вертикального размещения компонентов.

Класс Box также предоставляет статические методы, которые создают невидимые компоненты, которые можно использовать для улучшения компоновки.

Их можно даже использовать в контейнерах, которые не являются панелями Box, например, в панели JPanel.

Вы можете отдельно управлять выравниванием каждого компонента, вызывая следующие методы setAlignmentX, выравнивание о оси х от центра контейнера, и setAlignmentY, выравнивание по оси y, которые компонент наследует от класса Component.



strut- это невидимый компонент, который имеет фиксированный размер в пикселях.



Создается strut с помощью статических методов createHorizontalStrut и createVerticalStrut, после чего его можно добавлять в контейнер, как и любой другой компонент.

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

Он полезен для сохранения ориентации компонентов в контейнере по мере его изменения.

glue создается с помощью статического метода createGlue.

Разделительная область (rigid area) – это невидимый компонент с фиксированной шириной и высотой.

Этот компонент создается с помощью статического метода createRigidArea.

Кроме этих трех компонентов-разделителей можно использовать невидимый компонент с фиксированным минимальным, максимальным и предпочтительным размерами.

Он является объектом класса Filler, вложенного в класс Box.

SpringLayout

Менеджер компоновки SpringLayout размещает компоненты, определяя ограничения SpringLayout.Constraints между краями компонентов.




Например, вы можете определить, что левый край одного компонента является фиксированным расстоянием (например, 5 пикселей) от правого края другого компонента.

В SpringLayout положение каждого края зависит от положения только одного другого края.

Если далее создается ограничение SpringLayout.Constraints для создания новой привязки края, предыдущее связывание отбрасывается, и край остается зависимым только от одного края.

В отличие от многих менеджеров компоновки SpringLayout автоматически не устанавливает местоположение своих компонентов.

Для установки местоположения компонента, его левый, правый, верхний и нижний края связываются с соответствующими краями контейнера и соседних компонентов.

Края компонента привязываются с помощью объектов SpringLayout.Constraints.

Объект Constraints содержит ограничения, которые определяют способ изменения размера и позиции компонента в контейнере.

Перейти на страницу:

Похожие книги

Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT