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

Ссылку на компонент, помещенный в определенную область, можно получить методом getLayoutComponent, в котором указывает область.

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

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

Если не занята область CENTER, тогда компоненты прижимаются к границам контейнера.

Так как менеджер компоновки BorderLayout размещает не больше пяти компонентов, можно использовать в качестве компонентов панели, в которые дополнительно размещать компоненты.

GridLayout

Менеджер компоновки GridLayout размещает компоненты в таблицу с заданным в конструкторе числом строк и столбцов.




Все компоненты получают одинаковый размер.

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

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

Компоненты размещаются менеджером GridLayout слева направо по строкам созданной таблицы в том порядке, в котором они заданы в методах add контейнера.

Нулевое количество строк или столбцов означает, что менеджер сам создаст нужное их число.

CardLayout

Менеджер компоновки CardLayout показывает в контейнере стек компонентов, отображая только один, первый компонент.




Остальные компоненты лежат под первым в определенном порядке.

Их расположение определяется порядком добавления в контейнер с помощью метода add.

Следующий компонент можно показать методом next менеджера, предыдущий – методом previous, последний – методом last, первый – методом first.

Аргумент этих методов – ссылка на контейнер, в который помещены компоненты.

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

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

Метод add тогда имеет в качестве аргумента имя компонента.

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

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

GridBagLayout

Менеджер компоновки GridBagLayout позволяет размещать компоненты наиболее гибко, задавая размеры и положение каждого компонента.




В классе GridBagLayout есть только один конструктор, конструктор по умолчанию, без аргументов.

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

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

Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов.

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

Класс GridBagConstraints содержит одиннадцать полей, определяющих размеры компонентов, их положение в контейнере и взаимное положение, и несколько констант – значений полей.

Как правило, объект класса GridBagConstraints создается конструктором по умолчанию, затем значения нужных полей определяются простым присваиванием новых значений.

Здесь поле gridx указывает номер строки, поле gridy указывает номер столбца, поле gridwidth указывает количество занимаемых ячеек в строке, поле ipady указывает сколько добавляется к минимальной высоте компонента, поле fill используется, когда область отображения компонента больше, чем размер компонента.

GroupLayout

Менеджер компоновки GroupLayout работает с горизонтальной и вертикальной компоновкой отдельно.




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

Если вы забудете это сделать, GroupLayout выбросит исключение.

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

При последовательном размещении компоненты просто размещаются один за другим по одной оси.

Позиция каждого компонента определяется относительно предыдущего компонента.

Второй способ размещает компоненты параллельно – поверх друг друга в одном и том же месте.

Компоненты могут быть выровнены по базовой линии, по верху или низу по вертикали.

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

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

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

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

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

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

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

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