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

Остановимся подробнее на классе Cursor.

Класс Cursor

Основа класса — статические константы, определяющие форму курсора:

□ crosshair_cursor — курсор в виде креста, появляется обычно при поиске позиции для размещения какого-то элемента;

□ default_cursor — обычная форма курсора — стрелка влево вверх;

□ hand_cursor — "указующий перст", появляется обычно при выборе какого-то элемента списка;

□ move_cursor — крест со стрелками, возникает обычно при перемещении элемента;

□ text_cursor — вертикальная черта, появляется в текстовых полях;

□ wait_cursor — изображение часов, появляется при ожидании.

Следующие курсоры появляются обычно при приближении к краю или углу компонента:

□ e_resize_cursor — стрелка вправо с упором;

□ n_resize_cursor — стрелка вверх с упором;

□ ne_resize_cursor — стрелка вправо вверх, упирающаяся в угол;

□ nw_resize_cursor — стрелка влево вверх, упирающаяся в угол;

□ s_resize_cursor — стрелка вниз с упором;

□ se_resize_cursor — стрелка вправо вниз, упирающаяся в угол;

□ sw_resize_cursor — стрелка влево вниз, упирающаяся в угол;

□ w_resize_cursor — стрелка влево с упором.

Перечисленные константы используются для задания аргумента type в конструкторе класса Cursor(int type).

Вместо конструктора можно обратиться к статическому методу getPredefinedCursor(int type), создающему объект класса Cursor и возвращающему ссылку на него.

Получить курсор по умолчанию можно статическим методом getDefaultCursor(). Затем созданный курсор надо установить в компонент. Например, после выполнения:

Cursor curs = new Cursor(Cursor.WAIT CURSOR); someComp.setCursor(curs);

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

Как создать свой курсор

Кроме перечисленных предопределенных курсоров можно задать собственную форму курсора. Ее тип носит название custom_cursor. Сформировать свой курсор можно методом

createCustomCursor(Image cursor, Point hotspot, String name);

создающим объект класса Cursor и возвращающим ссылку на него. Перед этим следует создать изображение курсора cursor — объект класса Image. Как это сделать, рассказывается в главе 20. Аргумент name задает имя курсора, можно написать просто null. Аргумент hotspot определяет точку фокуса курсора. Эта точка должна быть в пределах изображения курсора, точнее, в пределах, показываемых методом

getBestCursorSize(int desiredWidth, int desiredHeight);

возвращающим ссылку на объект класса Dimension. Аргументы метода означают желаемый размер курсора. Если графическая система не допускает создание курсоров, возвращается (0, 0). Данный метод показывает приблизительно размер того курсора, который создаст графическая система, например (32, 32). Изображение cursor будет подогнано под этот размер, при этом возможны искажения.

Третий метод — getMaximumCursorColors ( ) — возвращает наибольшее количество цветов, например 256, которое можно использовать в изображении курсора.

Это методы класса java.awt.Toolkit, с которым мы еще не работали. Класс Toolkit содержит некоторые методы, связывающие приложение Java со средствами платформы, на которой выполняется приложение. Поэтому нельзя создать экземпляр класса Toolkit конструктором, для его получения следует выполнить статический метод

Toolkit.getDefaultToolkit().

Если приложение работает в окне Window или его расширениях, например Frame, то можно получить экземпляр Toolkit методом getToolkit ( ) класса Window.

Соберем все это вместе:

Toolkit tk = Toolkit.getDefaultToolkit();

int colorMax = tk.getMaximumCursorColors(); // Наибольшее число цветов.

Dimension d = tk.getBestCursorSize(50, 50); // d — размер изображения.

int w = d.width, h = d.height, k = 0;

Point p = new Point(0, 0); // Фокус курсора будет

// в его верхнем левом углу. int[] pix = new int[w * h]; // Здесь будут пикселы изображения.

for(int i = 0; i < w; i++) for(int j = 0; j < h; j++)

if (j < i) pix[k++] = 0xFFFF0000; // Левый нижний угол — красный.

else pix[k++] = 0; // Правый верхний угол — прозрачный.

// Создается прямоугольное изображение размером (w, h),

// заполненное массивом пикселов pix, с длиной строки w.

Image im = createImage(new MemoryImageSource(w, h, pix, 0, w));

Cursor curs = tk.createCustomCursor(im, p, null); someComp.setCursor(curs);

В этом примере создается курсор в виде красного прямоугольного треугольника с катетами размером 32 пиксела и устанавливается в некотором компоненте someComp.

Упражнение

1. Создайте курсор в форме правильного треугольника.

События

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

Событие FocusEvent возникает при получении или потере фокуса.

Событие KeyEvent проявляется при каждом нажатии и отпускании клавиши, если компонент имеет фокус ввода.

Событие MouseEvent происходит при манипуляциях мыши на компоненте.

<p><strong>Класс <emphasis>Container</emphasis></strong></p>

Каждый компонент перед выводом на экран помещается в контейнер — подкласс класса Container.

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

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

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.

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

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

Все жанры