Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
showStatus("Dragging mouse at " + mouseX + ", " + mouseY);
repaint();
}
// обработать событие, наступающее при перемещении курсора мыши
public void mouseMoved(MouseEvent me) {
// отобразить текущее положение курсора в строке состояния
showStatus("Moving mouse at " + me.getXO + "t " +
me.getY () ) ;
}
// отобразить сообщение из переменной msg в окне апплета
// по координатам текущего положения курсора
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
}
Выполнение этого апплета дает приведенный ниже результат.
Рассмотрим приведенный выше исходный код апплета более подробно. Класс MouseEvents расширяет класс Applet и реализует интерфейсы MouseListener и MouseMotionListener. В этих интерфейсах объявлены методы, получающие и обрабатывающие различные виды событий от мыши. В данном примере апплет одновременно выступает в роли источника и приемника событий. И это вполне допустимо, поскольку Applet является подклассом, производным от суперкласса Component, в котором определены методы addMouseListener () и addMouseMotionListener (). Ситуация, когда один и тот же класс одновременно служит источником и приемником событий, является типичной для апплетов.
В методе init () апплет регистрируется как приемник событий от мыши. Для этой цели используются методы addMouseListener () и addMouseMotionListener (), являющиеся членами класса Component. Ниже приведены общие формы объявления этих методов.
void addMouseListener(MouseListener ml)
void addMouseMotionListener(MouseMotionListener mml)
где ml и mml — ссылки на объекты, принимающие события от мыши и перемещения мыши соответственно. В данном примере для приема и обработки обоих видов событий используется один и тот же объект.
В рассматриваемом здесь апплете реализованы все методы, объявленные в интерфейсах MouseListener и MouseMotionListener. Они выступают в роли обработчиков разных событий, после чего возвращают управление.
Другие ключевые слова Java
И в завершение этой главы будет сделан краткий обзор остальных, не упоминавшихся ранее ключевых слов Java. К их числу относятся следующие ключевые слова:
transient
volatile
instanceof
native
strictfp
assert
Перечисленные выше ключевые слова используются в более сложных программах, чем те, которые представлены для примера в этой книге. Рассмотрим эти ключевые слова вкратце, чтобы дать хотя бы самое общее представление об их назначении.
Модификаторы transient и volatile
Ключевые слова transient и volatile имеют весьма специфическое назначение. Если переменная экземпляра объявляется как transient, то при сохранении объекта ее содержимое не запоминается. Иными словами, поле transient не влияет на состояние объекта.
Модификатор volatile упоминался в главе И, но он заслуживает более пристального внимания. Объявив переменную как volatile, вы сообщаете компилятору, что ее значение может быть неожиданно изменено в результате действий, выполняемых в других частях программы. В главе 11 было показано, что подобная ситуация может возникнуть в многопоточных программах. В них одна и та же переменная часто используется несколькими потоками. Из соображений эффективности каждый поток может содержать собственную копию разделяемой переменной. Подлинная копия (или оригинал) переменной обновляется в различные моменты времени, например, при выполнении метода, объявленного как synchronized. Как правило, такой подход себя оправдывает, но иногда он оказывается неуместным. Ведь иногда требуется, чтобы оригинал переменной отражал текущее состояние, используемое во всех потоках. И для того чтобы обеспечить выполнение этого условия, переменную нужно объявить как volatile.
Ключевое слово instanceof