Читаем Java 7 полностью

В листинге 14.2 создаются пять кнопок, размещаемых в контейнере. Обратите внимание на отсутствие установки менеджера в контейнере setLayout () — менеджер BorderLayout установлен в контейнере JFrame по умолчанию. Результат размещения показан на рис. 14.2.

Листинг 14.2. Менеджер размещения BorderLayout

import java.awt.*; import javax.swing.*;

class BorderTest extends JFrame{

BorderTest(String s){ super(s);

add(new JButton("North"), BorderLayout.NORTH); add(new JButton("South"), BorderLayout.SOUTH); add(new JButton("West"), BorderLayout.WEST); add(new JButton("East"), BorderLayout.EAST); add(new JButton("Center")); setSize(300, 200); setVisible(true);

}

public static void main(String[] args){

JFrame f= new BorderTest(" Менеджер BorderLayout"); f.setDefaultCloseOperation(EXIT ON CLOSE);

}

}

Рис. 14.2. Области размещения BorderLayout
Рис. 14.3. Компоновка с помощью FlowLayout и BorderLayout

Менеджер размещения BorderLayout кажется неудобным: он располагает не больше пяти компонентов, последние растекаются по всей области, области имеют странный вид. Но дело в том, что в каждую область можно поместить не компонент, а панель, и размещать компоненты на ней, как сделано в листинге 14.3 и показано на рис. 14.3. Напомним, что на панелях Panel и JPanel менеджер размещения по умолчанию —

FlowLayout.

Листинг 14.3. Сложная компоновка

import java.awt.*; import javax.swing.*;

class BorderPanelTest extends JFrame{

BorderPanelTest(String s){ super(s);

// Создаем панель p2 с тремя кнопками JPanel p2 = new JPanel();

p2.add(new JButton("Выполнить")); p2.add(new JButton("Отменить")); p2.add(new JButton("Выйти"));

JPanel p1 = new JPanel(); p1.setLayout(new BorderLayout());

// Помещаем панель p2 с кнопками на "юге" панели p1 p1.add(p2, BorderLayout.SOUTH);

// Поле ввода помещаем на "севере" p1.add(new JTextField("Поле ввода", 20), BorderLayout.NORTH);

// Область ввода помещается на панель с прокруткой JScrollPane sp = new JscrollPane(

new JTextArea("Область ввода", 5, 20));

// Панель прокрутки помещается в центр панели p1 p1.add(sp), BorderLayout.CENTER);

// Панель p1 помещаем в "центре" контейнера add(p1, BorderLayout.CENTER); setSize(300, 200); setVisible(true);

}

public static void main(String[] args){

JFrame f= new BorderPanelTest(" Сложная компоновка"); f.setDefaultCloseOperation(EXIT ON CLOSE);

}

}

<p><strong>Менеджер <emphasis>GridLayout</emphasis></strong></p>

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

GridLayout(int rows, int columns);

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

Второй конструктор позволяет задать промежутки между компонентами в пикселах по горизонтали hgap и вертикали vgap:

GridLayout(int rows, int columns, int hgap, int vgap);

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

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

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

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

Листинг 14.4. Менеджер GridLayout

import java.awt.*; import javax.swing.*; import java.util.*;

class GridTest extends JFrame{

GridTest(String s){ super(s);

setLayout(new GridLayout(4, 4, 5, 5));

StringTokenizer st = new StringTokenizer("7 8 9 / 4 5 6 * 1 2 3 — 0 . = +"); while(st.hasMoreTokens())

add(new JButton(st.nextToken())); setSize(200, 200); setVisible(true);

}

public static void main(String[] args){

JFrame f= new GridTest(" Менеджер GridLayout"); f.setDefaultCloseOperation(EXIT ON CLOSE);

}

}

Рис. 14.4. Размещение кнопок менеджером GridLayout
<p><strong>Менеджер <emphasis>CardLayout</emphasis></strong></p>

Менеджер размещения CardLayout своеобразен — он показывает в контейнере только один, первый (first), компонент. Остальные компоненты лежат под первым в определенном порядке как игральные карты в колоде. Их расположение определяется порядком, в котором написаны методы add(). Следующий компонент можно показать методом next(Container c), предыдущий — методом previous(Container c), последний — методом last(Container c), первый — методом first(Container c). Аргумент этих методов — ссылка на контейнер, в который помещены компоненты, обычно this.

В классе два конструктора:

□ CardLayout () — не отделяет компонент от границ контейнера;

□ CardLayout (int hgap, int vgap) — задает горизонтальные hgap и вертикальные vgap поля.

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

add(Component comp, Object constraints);

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

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

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