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

Label lmin = new Label("0", Label.RIGHT); lmin.setBounds(0, 30, 30, 30); p.add(lmin);

Label lmiddle = new Label("127", Label.RIGHT); lmiddle.setBounds(0, 120, 30, 30); p.add(lmiddle); Label lmax = new Label("255", Label.RIGHT); lmax.setBounds(0, 200, 30, 30); p.add(lmax);

sbRed.setBackground(Color.red); sbRed.setBounds(40, 30, 20, 200); p.add(sbRed);

sbGreen.setBackground(Color.green); sbGreen.setBounds(70, 30, 20, 200); p.add(sbGreen);

sbBlue.setBackground(Color.blue); sbBlue.setBounds(100, 30, 20, 200); p.add(sbBlue);

Label lp = new Label("Образец:"); lp.setBounds(250, 50, 120, 30); add(lp);

lm.setBackground(new Color(127, 127, 127)); lm.setBounds(220, 80, 120, 80); add(lm); b1.setBounds(240, 200, 100, 30); add(b1); b2.setBounds(240, 240, 100, 30); add(b2);

setSize(400, 300); setVisible(true);

}

public static void main(String[] args){

Frame f = new ScrollTest(" Выбор цвета"); f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){ System.exit(0);

}

});

}

}

Контейнер Panel

В листинге 10.4 использован контейнер Panel. Рассмотрим возможности этого класса.Контейнер Panel — это невидимый компонент графического интерфейса, служащий для объединения нескольких других компонентов в один объект типа Panel.Класс Panel очень прост, но важен. В нем всего два конструктора:□ Panel ( ) -создает контейнер с менеджером размещения по умолчанию FlowLayout;□ Panel (LayoutManager layout) — создает контейнер с указанным менеджером размещения компонентов layout.После создания контейнера в него добавляются компоненты унаследованным методом

add():

Panel p = new Panel(); p.add(comp1); p.add(comp2);

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

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

В листинге 10.4 три полосы прокрутки вместе с заголовком Подберите цвет и масштабными метками 0, 127 и 255 образуют естественную группу. Если мы захотим переместить ее в другое место окна, нам придется переносить каждый из семи компонентов, входящих в указанную группу. При этом придется следить за тем, чтобы их взаимное положение не изменилось. Вместо этого мы создали панель p и разместили на ней все семь элементов. Метод setBounds () каждого из рассматриваемых компонентов указывает в данном случае положение и размер компонента в системе координат панели p, а не окна Frame. В окно мы поместили сразу целую панель, а не ее отдельные компоненты.

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

Контейнер ScrollPane

Контейнер ScrollPane может содержать только один компонент, но зато такой, который не помещается целиком в окне. Контейнер обеспечивает средства прокрутки для просмотра большого компонента. В контейнере можно установить линейки прокрутки либо постоянно, константой SCROLLBARS_ALWAYS, либо так, чтобы они появлялись только при необходимости (если компонент действительно не помещается в окно) константой SCROLLBARS_AS_NEEDED.

Если линейки прокрутки не установлены, а это задает константа SCROLLBARS_NEVER, то перемещение компонента для просмотра нужно обеспечить из программы одним из методов setScrollPosition().

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

□ ScrollPane () — создает контейнер, в котором полосы прокрутки появляются по необходимости;

□ ScrollPane(int scrollbars) — создает контейнер, в котором появление линеек прокрутки задается одной из трех указанных ранее констант.

Конструкторы создают контейнер размером 100x100 пикселов, в дальнейшем можно изменить размер унаследованным методом setSize(int width, int height) .

Ограничение, заключающееся в том, что ScrollPane может содержать только один компонент, легко обходится. Всегда можно сделать этим единственным компонентом объект класса Panel, разместив на панели что угодно.

Среди методов класса интересны те, что позволяют прокручивать компонент в

ScrollPane:

□ методы getHAdj ustable ( ) и getVAdj ustable ( ) возвращают положение линеек прокрутки в виде интерфейса Adjustable;

□ метод getScrollPosition () показывает в виде объекта класса Point координаты (x, y) точки компонента, находящейся в левом верхнем углу панели ScrollPane;

□ метод setScrollPosition(Point p) или setScrollPosition(int x, int y) прокручивает компонент в позицию (x, y) .

Контейнер Window

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

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

Java 7
Java 7

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

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

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

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